Recherche

Excel VBA Différence entre Loop Until et Loop While


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:
Le code dans la boucle s'exécute lorsque la condition est fausse:

Do Until (condition)
'Code qui s'exécute si la condition est fausse
Loop

  • Loop While:
Le code dans la boucle s'exécute lorsque la condition est vraie:

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 Prenom

Private 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
InputBox VBA

MSGBOX ALERT

InputBox


MsgBox

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