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 !
A voir également:
- Boucle while en VBA
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Smart tv qui s'allume et s'éteint en boucle - Forum Téléviseurs
- Vba attendre 1 seconde ✓ - Forum VB / VBA
4 réponses
bonsoir,
ce que j'ai compris
bonne suite
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
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)....
Merci encore !
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 !