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

3 réponses

  1. 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
    1. 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
      1. 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
  2. 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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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