Boucle while en VBA
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je découvre la boucle while en VBA et je ne comprends pas exactement comment ça fonctionne.
Voici mon code :
Je cherche à écrire en feuille 3 la valeur de la case de la feuille 1 si elle est non nulle et un chiffre sinon (qui est incrémenté chaque fois que l'on a une valeur non nulle).
J'obtiendrai donc quelque chose du style
0
0
valeur de la cellule (3,1)
1
1
1
1
valeur de la cellule (8,1)
2
2
2
2
etc ...
Quelqu'un peut-il m'aider ?
Merci !
Je découvre la boucle while en VBA et je ne comprends pas exactement comment ça fonctionne.
Voici mon code :
Dim a As String
a = 0
Dim b As Long
For b = 1 To 1000
Do While Sheets("Feuil1").Cells(b, 1).Value = ""
Sheets("Feuil3").Cells(b, 1).Value = a
Exit Do
a = a + 1
Sheets("Feuil3").Cells(b, 1).Value = Sheets("Feuil1").Cells(b, 1).Value
Loop
Next
End Sub
Je cherche à écrire en feuille 3 la valeur de la case de la feuille 1 si elle est non nulle et un chiffre sinon (qui est incrémenté chaque fois que l'on a une valeur non nulle).
J'obtiendrai donc quelque chose du style
0
0
valeur de la cellule (3,1)
1
1
1
1
valeur de la cellule (8,1)
2
2
2
2
etc ...
Quelqu'un peut-il m'aider ?
Merci !
4 réponses
-
bonsoir,
ce que j'ai compris
Const bmax = 30 Dim b As Long Dim a As Long a = 0 b = 1 If Sheets("Feuil1").Cells(b, 1).Value = "" Then a = 0 Sheets("Feuil3").Cells(b, 1).Value = a Else Sheets("Feuil3").Cells(b, 1).Value = Sheets("Feuil1").Cells(b, 1).Value End If For b = 2 To bmax If Sheets("Feuil1").Cells(b, 1).Value = "" Then If Sheets("Feuil1").Cells(b - 1, 1).Value <> "" Then a = a + 1 End If Sheets("Feuil3").Cells(b, 1).Value = a Else Sheets("Feuil3").Cells(b, 1).Value = Sheets("Feuil1").Cells(b, 1).Value End If Next b
bonne suite -
C'est exactement ça.
C'est vrai qu'un if fonctionne aussi bien qu'un while ici.
Merci beaucoup ! -
Je suis désolé, je réouvre le sujet.
J'aimerais maintenant faire la même chose pour chacune de mais colonnes.
J'ai écrit ce code, mais il y a une erreur (1004)....
Dim cmax As Long Dim c As Long cmax = 50000 For c = 1 To cmax Dim bmax As Long bmax = Sheets("Feuil1").Cells(65536, c).End(xlUp).Row Dim b As Long Dim a As Long a = 0 b = 1 If Sheets("Feuil1").Cells(b, c).Value = "" Then a = 0 Sheets("Feuil3").Cells(b, c).Value = a Else Sheets("Feuil3").Cells(b, c).Value = Sheets("Feuil1").Cells(b, c).Value End If For b = 2 To bmax If Sheets("Feuil1").Cells(b, c).Value = "" Then If Sheets("Feuil1").Cells(b - 1, c).Value <> "" Then a = a + 1 End If Sheets("Feuil3").Cells(b, c).Value = a Else Sheets("Feuil3").Cells(b, c).Value = Sheets("Feuil1").Cells(b, c).Value End If Next b Next c End Sub
Merci encore ! -