Un même code VBA peut être écrit en utilisant Loop Until ou Bien Loop While. Il n'y a pas de différence énorme et dépendent des choix de l'utilisateur.
- Loop Until:
Do Until (condition)
'Code qui s'exécute si la condition est fausse
Loop
- Loop While:
Do While (condition)'Code qui s'exécute si la condition est vraie
Loop
- Loop Infinie
Il faut faire attention aux boucles infinies qui ne permettent pas au code de sortir des conditions et le code s'exécute à l'infinie.
Exemple 1 de Boucle Infinie:
Private Sub CommandButton1_Click()Dim I As IntegerI = 1Do I = I + 1 If (Cells(I, 1).Value <> "Boucle Infinie") Then MsgBox ("C'est une boucle infinie " & Str(I)) End If'Parcourir la colonne 1 et s'arrêter si la Valeur de la cellule est égal à "Boucle Infinie"Loop While (Cells(I, 1).Value <> "Boucle Infinie")End Sub
Exemple 2 : Validation de données entrées par l'utilisateur
Ce code permet de tester la validité des données entrées dans l'InputBox en fonction du Nnombre d'espace dans le nom et PrenomPrivate Sub Cmd_Validation_Click()
Dim Utilisateur As StringDim variableTest As StringDim Test As BooleanTest = True
DoUtilisateur = InputBox("Entrez votre Nom et Prénom?", "Utilisateur")
variableTest = Utilisateur
If (variableTest <> "") Then Test = Validation_Test(variableTest)
Loop While (Test = False) Or (variableTest <> "")
MsgBox ("Bienvenue " & Utilisateur)
End Sub
***********************************************
Public Function Validation_Test(ByRef Utilisateur As String) As BooleanDim Longueur As IntegerDim I As IntegerDim NombreEspace As IntegerDim MSB As IntegerUtilisateur = Trim(Utilisateur) 'Enlever les Espaces Inutiles equi Supprespace()Longueur = Len(Utilisateur) 'Nombre de caractère dans le nom et prenom de l'utilisateurFor I = 1 To Longueur
If Left(Utilisateur, 1) = " " ThenNombreEspace = NombreEspace + 1
End IfUtilisateur = Right(Utilisateur, Len(Utilisateur) - 1)
Next I
If (NombreEspace > 1) Or (NombreEspace = 0) ThenValidation_Test = False
MSB = MsgBox("Veuillez entre votre nom et prenom séparé par un Espace", vbCritical, "Erreur")
ElseValidation_Test = True
End IfEnd Function
Illustration de Résultat
Exemple 3 : Utilisation des tableaux en VBA pour trier des données
Un code qui s'exécute, sur Click sur un Bouton ActiveX, pour des données désordonnées.Private Sub CmdTrierTAB_Click()
Dim valeur_Temporel As IntegerDim autre_Iteration As BooleanDim i As IntegerDim mon_Tableau(10) As Integer
For i = 2 To 11
mon_Tableau(i - 2) = Cells(i, "E").Value
Next i
Do'Initier la variable autre_iteration à Falseautre_Iteration = False
'comparer chaque valeur à la valeur suivante
For i = 0 To 9
If mon_Tableau(i) > mon_Tableau(i + 1) Then'Substituer le rang les valeurs en fonction de leurs valeursvaleur_Temporel = mon_Tableau(i)
mon_Tableau(i) = mon_Tableau(i + 1)
mon_Tableau(i + 1) = valeur_Temporel
'Modifier la variable sur laquelle est conditionnée la fonction Loopautre_Iteration = TrueEnd IfNext i
Loop While autre_Iteration = TrueRange("F1").Value = "Données Triées"
For i = 2 To 11
Cells(i, "f").Value = mon_Tableau(i - 1)
Next i
End Sub
Auteur: N’hésitez pas à me signaler les
erreurs qui peuvent glisser dans cet article afin de les corriger.
Aucun commentaire :
Enregistrer un commentaire