Bonjour à toutes et à tous,
je suis en train de mettre au point des bouts de code et ne comprends pas la différence entre une boucle do loop avec dans un cas la condition en haut et dans l'autre cas la condition en bas de boucle.
J'ai recherché un peu partout et ai compris que si la condition est à la fin, dans ce cas la condition sera testée au moins une fois.
Mais dans le cas d'espèce (voir pièce jointe et code ci-dessous), cela ne fait aucune différence …
Aurais-je loupé un épisode ?
J'avoue que j'adapte un bout de code qui m'avait été présenté sur ce forum, avec la condition en fin de boucle, mais sans qu'il soit fait explicitement référence à la nécessité d'avoir la condition à la fin plutôt qu'au début.
Comme je ne vois pas de différence mais surtout que j'aimerais comprendre, quelqu'un peut-il me dire pourquoi j'arrive au même résultat, quelque soit le type de boucle utilisé ?
ci-dessous le code avec la condition à la fin
ci-dessous le code avec la condition au début
Merci d'avance pour vos lumières
Sebast
je suis en train de mettre au point des bouts de code et ne comprends pas la différence entre une boucle do loop avec dans un cas la condition en haut et dans l'autre cas la condition en bas de boucle.
J'ai recherché un peu partout et ai compris que si la condition est à la fin, dans ce cas la condition sera testée au moins une fois.
Mais dans le cas d'espèce (voir pièce jointe et code ci-dessous), cela ne fait aucune différence …
Aurais-je loupé un épisode ?
J'avoue que j'adapte un bout de code qui m'avait été présenté sur ce forum, avec la condition en fin de boucle, mais sans qu'il soit fait explicitement référence à la nécessité d'avoir la condition à la fin plutôt qu'au début.
Comme je ne vois pas de différence mais surtout que j'aimerais comprendre, quelqu'un peut-il me dire pourquoi j'arrive au même résultat, quelque soit le type de boucle utilisé ?
ci-dessous le code avec la condition à la fin
Code:
Sub Selection_Annee_until_à_la_fin()
Dim AnneeReponse As Long
Dim PlagedeRecherche As Range
Dim RechercheAnnee As Range
Dim dernlig As Long
dernlig = Sheets("Source").Range("F" & Rows.Count).End(xlUp).Row
Set PlagedeRecherche = Sheets("Source").Range("F2:F" & dernlig)
Do
AnneeReponse = Application.InputBox("Indiquez l'année, SVP ", Type:=1)
' test de l'existence de l'année dans la base
Set RechercheAnnee = PlagedeRecherche.Find(What:=AnneeReponse, LookAt:=xlWhole)
If RechercheAnnee Is Nothing Then
MsgBox "L'année indiquée ne figure pas dans la base, recommencez SVP"
End If
Loop Until Not RechercheAnnee Is Nothing
MsgBox "l'année " & RechercheAnnee & " a été saisie, ici la suite du traitement ..."
End Sub
ci-dessous le code avec la condition au début
Code:
Sub Selection_Annee_until_au_début()
Dim AnneeReponse As Long
Dim PlagedeRecherche As Range
Dim RechercheAnnee As Range
Dim dernlig As Long
dernlig = Sheets("Source").Range("F" & Rows.Count).End(xlUp).Row
Set PlagedeRecherche = Sheets("Source").Range("F2:F" & dernlig)
Do Until Not RechercheAnnee Is Nothing
AnneeReponse = Application.InputBox("Indiquez l'année, SVP ", Type:=1)
' test de l'existence de l'année dans la base
Set RechercheAnnee = PlagedeRecherche.Find(What:=AnneeReponse, LookAt:=xlWhole)
If RechercheAnnee Is Nothing Then
MsgBox "L'année indiquée ne figure pas dans la base, recommencez SVP"
End If
Loop
MsgBox "l'année " & RechercheAnnee & " a été saisie, ici la suite du traitement ..."
End Sub
Merci d'avance pour vos lumières
Sebast