Repeter condition jusqu'à 1 cellule doné vb

Bonjour,

Voilà mon probléme, je voudrais répeter ces conditions jusqu'à une colonne non défini (càdire que l'utilisateur pourra rajouter des colonnes et que je ne sais pas combien).
Mais la dernière colonne du tableau ne sera pas à prendre en compte.

Private Sub ComboBox1_Change()
If ComboBox1 = "XXX" And Not IsEmpty(Range("Feuil1!C3").Value) Then
TextBox1.Value = Range("Feuil1!C2").Value
End If
End Sub

Je ne sais si je suis compréhensible, mais j'ai essayé.

Merci de votre aide

13 réponses

  1. En tout cas pour moi, tu n'est pas très compréhensible...Déjà tu parle de répéter une action donc j'aurais aimé voir un while ou un for mais comme je n'ai pas tout compris...
    1. c'est du VBA.
      ComboBox1 = "XXX" tu vérifies quoi par cette expression ?
      1. Mais justement je ne sais pas comment l'ecrire avec un while ou un for

        Merci
        1. Fais le en pseudo langage d'abord. Ensuite si la logique(l'algo) est bonne tu peux le faire en vb
          1. Bonjour,

            j'ai essayé d'écrire un truc mais sans conviction....

            Quand les cellules de la ligne 2 sont numériques alors les écrire dans la listbox.
            Boucle à partir de la troisième colonne.

            Private Sub ComboBox1_Change()
            Do While Cu!.Cells(3, I) <> ""
            If IsNumeric(Cu.Cells(3, I).Value) Then
            ListBox1.Value = Range("Cu!Cells(3, i)").Value
            End If

            I = 2
            I = I + 1
            Loop

            End Sub

            Merci de votre aide
            1. Bonjour,

              Juste en regardant ta boucle, ici tu boucles toujours sur la même colonne, I étant initialisé à 2 dans la boucle !!!
              I = 2 doit être placé juste avant le Do While.

              ;o)
          2. Merci pour l'info,

            mais ca ne marche toujours pas, ca met en jaune la ligne
            Do While Cu!.Cells(3, I) <> ""
            1. je pense que CU!.Cells(3,I) pose problème.

              Utilise plutôt : Sheets("CU").Cells(3,I) dans tout ton code

              ;o)
          3. Merci de votre aide.
            Voilà ce que j'ai écrit mais ca ne marche toujours pas!!!

            Private Sub ComboBox1_Change()
            I = 2
            I = I + 1
            Do While Sheets(Cu).Cells(3, I) <> ""
            If IsNumeric(Sheets(Cu).Cells(3, I).Value) Then
            ListBox1.Value = Range(Sheets(Cu).Cells(3, I)).Value
            End If

            Loop

            End Sub

            D'avance merci
            1. CU est le nom d'une feuille ? si oui, il faut mettre les double-côtes

              Sheets("CU")

              Ou alors le numéro de la feuille

              Sheets(1)

              Range(Sheets(Cu).Cells(3, I)).Value n'est pas la bonne syntaxe.
              Il faut écrire : Sheets("Cu").Cells(3, I).Value

              I = I + 1 doit rester dans la boucle While ... je ne crois pas avoir dit qu'il fallait le déplacer. Prend la peine de bien lire les recommandations que l'on te donne et d'essayer de comprendre ce que tu fais.

              ;o)
              «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
              Nicolas Boileau
              1. J'ai éécrit d'aprés vos conseils, il n'y plus de message d'erreur (c'est déjà mieux) mais il ne se passe rien dans ma lisbox

                Private Sub ComboBox1_Change()
                I = 3

                Do While Worksheets("Cu").Cells(I, 2) <> ""
                If IsNumeric(Worksheets("Cu").Cells(I, 2).Value) Then
                ListBox1.Value = Cells(I, 2).Value
                End If
                I = I + 1
                Loop

                End Sub

                Merci beaucoup
                1. ListBox1.AddItem = Worksheets("Cu").Cells(I, 2).Value)

                  Tu boucles maintenant sur les lignes et non sur les colonnes !!! c'est voulu ?
              2. Pour la boucle sur colonne je viens de rechanger (j'avais juste essayé un truc)

                J'ai mis ce que tu m'a dit mais ca me surligne la ligne rajouté en jaune

                Private Sub CommandButton1_Click()
                I = 2

                Do While Worksheets("Cu").Cells(2, I) <> ""
                If Not IsEmpty(Worksheets("Cu").Cells(2, I).Value) Then
                ListBox1.AddItem = Worksheets("Cu").Cells(2, I).Value
                End If
                I = I + 1
                Loop

                End Sub
                1. Je ne sais pas.

                  Il y a beaucoup d'incohérence dans ce que tu donnes, ça devient difficile à suivre.

                  Tu étais dans l'évènement Change() du ComboBox1 et maintenant dans le Click() de CommandButton1 !!!

                  Tu passes d'un boucle sur les colonnes à une boucle sur les lignes ...

                  ListBox1 est placé où ? sur un userform ? une feuille ?

                  J'ai testé ici sur un Userform et la syntaxe que je t'ai donné fonctionne.

                  As-tu un message d'erreur ?
              3. Mes changements sont volontaires, c'est que je cherchais pourquoi ca ne marche et je vois des incohérences donc je change...

                La listBox est sur un userform, et j'ai comme message erreur de compilation fonction ou variable attendu.

                Merci
                1. Enlève le = dans ListBox1.AddItem = Worksheets("Cu").Cells(2, I).Value

                  Ca devient : ListBox1.AddItem Worksheets("Cu").Cells(2, I).Value