Boucle if
Marina
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train de découvrir VBA et je cherche à faire une boucle qui test les cases d'une colone d'excel et que tant que la case n'est pas vide, on doit allé à la suivante. Mais ça ne marche pas...
Voilà mon code :
Sub choixouvrage()
Dim k As String
Dim i As Single
k = InputBox("nom de l'ouvrage")
If Sheets(k).Cells(i, 1) <> void Then i = i + 1 Else Sheets(k).Cells(i, 1).Value = InputBox("votrenom?")
End Sub
Je suis en train de découvrir VBA et je cherche à faire une boucle qui test les cases d'une colone d'excel et que tant que la case n'est pas vide, on doit allé à la suivante. Mais ça ne marche pas...
Voilà mon code :
Sub choixouvrage()
Dim k As String
Dim i As Single
k = InputBox("nom de l'ouvrage")
If Sheets(k).Cells(i, 1) <> void Then i = i + 1 Else Sheets(k).Cells(i, 1).Value = InputBox("votrenom?")
End Sub
A voir également:
- Boucle if
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Huawei s'allume et s'éteint en boucle - Forum Huawei
3 réponses
utilise les fonctions isempty ou encore len pour mesurer la longeur de mot qui se trouve dans la cellule, longeur 0 = vide
If IsEmpty(Sheet(k).Cells(i,1)) = False Then
ou
if Len(Sheet(k).Cells(i,1)) =0 then
If IsEmpty(Sheet(k).Cells(i,1)) = False Then
ou
if Len(Sheet(k).Cells(i,1)) =0 then
heu et puis je crois que ta facon de faire appel au loop est pas bnes, ta une drole de structure, jai fait .net il se peut que tu trouve ma facon d'utilise les expression differente... mais sa marche kan meme sur excel 2003
bonjour Marina, Icejack
Marina, "Void" n'existe pas en VBA
Tu as pas besoin de boucle pour traiter ce problème:
nota: quand tu utilises inputbox, il faut vérifier que l'utilisateur n'a pas appuyé sur "annuler" ou qu'il n'a rien rentré comme nom
Marina, "Void" n'existe pas en VBA
Tu as pas besoin de boucle pour traiter ce problème:
Dim lig As Long
Dim nom As String
With Sheets(K)
lig = .Columns(1).Find("", .[A65536]).Row
nom = InputBox("quel est votre nom?")
If nom = "" Then: Exit Sub
.Cells(lig, 1) = nom
End With
nota: quand tu utilises inputbox, il faut vérifier que l'utilisateur n'a pas appuyé sur "annuler" ou qu'il n'a rien rentré comme nom
Sub choixouvrage()
Dim k As String
Dim i As Single
k = InputBox("nom de l'ouvrage")
If Len(Sheets(k).Cells(i, 1)) <> 0 Then i = i + 1 Else Sheets(k).Cells(i, 1).Value = InputBox("votrenom?")
'Dim i As integer=0
'Do i=i+1 Until Sheets(k).Cells(i, 1) <> void loop'
End Sub
faut structure un peu ton code pour le rendre plus lisible
pour savoir si la boite est vide la forme approprier serait:
If Len(Sheets(k).Cells(i, 1)) > 0 Then i = i + 1 Else Sheets(k).Cells(i, 1).Value = //cette exemple implique que la longeur du string est plus grande que 0 soit kil a lu un mot das la cellule //ou if isempty(Sheets(k).Cells(i, 1)) = false then