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
Configuration: Windows 2000 Internet Explorer 6.0
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-
Merci de répondre si vite. Maintenant, quand je lance ma macro, elle me demande le nom de l'ouvrage, et quand je lui donne le nom d'une de mes feuille et il me répond, erreur 400...voilà le code :
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- Marina me trompe ou c t tou premier pas avec VBA? hihi
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
-
-
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:
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