Boucle if

Marina -  
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

3 réponses

icejack Messages postés 5 Statut Membre 1
 
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
0
Marina
 
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
0
icejack Messages postés 5 Statut Membre 1 > Marina
 
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



0
icejack Messages postés 5 Statut Membre 1
 
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
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
0