Boucle if

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
Configuration: Windows 2000
Internet Explorer 6.0

3 réponses

  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
    1. 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
    2. @MarinaMarina 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
  2. 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
    1. Contributeur
      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