• Initiateur de la discussion Initiateur de la discussion chatounet
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

chatounet

Guest
Bonjour à vous
Jusqu'à ce jour j'ai cru que la boucle do until avait deux syntaxes
Do until condition
code
loop

ou

do
code
loop until condition

La seule différence que je voyais était que dans le second cas, la boucle se faisait au moins une fois.

Or dans un bout de vba je me suis aperçu que la différence semble aller au-delà.

mon code :

Sub truc()
Dim pl As Range
Set pl = Range("a1:h34")
h = 0
For i = 1 To pl.Count
pl(i) = Int(Rnd() * 1000)
Next i
b = pl.Value
For i = 1 To UBound(b, 1)
For j = 1 To UBound(b, 2)
Rnd (b(i, j))
If b(i, j) Mod 3 = 1 Then
With Cells(i, j)
.Interior.ColorIndex = 34
.Font.ColorIndex = 3
End With
End If
Next j
Next i
Range("a1").CurrentRegion = b
End Sub
Sub CaMarche()
For Each c In Range("a1:h34")
Do Until c.Interior.ColorIndex = 34
truc
h = h + 1
Loop
Next
MsgBox h
End Sub
Sub CaNeMarchePas()
For Each c In Range("a1:h34")
Do
truc
h = h + 1
Loop Until c.Interior.ColorIndex = 34
Next
MsgBox h
End Sub

Merci pour votre attention. Je vous joins le classeur.
 

Pièces jointes

Bonsoir
Vite fait , un truc bizarre !! il y a des variables inter Sub penses tu que les valeurs soient conservées ??
sont elles déclarées "Public" ? dans les modules ?
> A tester en debug > track en "pas à pas" tu verras quoi , principalement pour C
A mon avis dans ton Do... avec cette variable cela ne doit pas fonctionner
je laisse la suite ....à d'autres
 
Bonjour,

ça veut dire quoi "ça marche pas" ?
Les 2 boucles fonctionnent et agissent telles que tu les as écrites.
Comme dit au-dessus, tes variables h sont locales, donc indépendantes.
Et si tu pouvais utiliser les balises code (sur l'icone Insérer) que ce soit plus lisible stp.
eric
 
Bonjour à tous
ça veut dire quoi "ça marche pas" ?
. Je me suit très ma exprimé. Elle fonctionne comme tu l''as dit Eric, mais elle ne me donnait pas le résultat escompté (celui de la deuxième macro).
Comme tu l'as aussi remarqué elle fonctionne telle que je l'ai écrite. Maintenant ça me paraît évident (ma réponse est dans ma question intiale). Dans la Sub CaMarche le programme a pour 1ère consigne la condition, ensuite il appel essi. Ainsi pour un ultime tour il se rend compte que la condition est remplie alors il arrête la boucle. Pour CaNeMarche pas, d'emblée il appelle déjà essi, la boucle s'effectue donc autant de fois qu'il y a de cellules dans la range. Dans le premier cas la condition dit qu'elle est remplie, ce qui a pour effet l'arrêt de la boucle, aux alentours de 17 fois versus 272 pour CaNeMarche pas.
Est-ce que mon raisonnement est correct?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
595
Réponses
8
Affichages
350
Réponses
4
Affichages
684
Réponses
5
Affichages
824
Retour