Repeter condition jusqu'à 1 cellule doné vb

juliet -  
 juliet -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  2. Breub62 Messages postés 3452 Statut Membre 369
     
    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...
    0
  3. sapma Messages postés 174 Statut Membre 5
     
    c'est du VBA.
    ComboBox1 = "XXX" tu vérifies quoi par cette expression ?
    0
  4. juliet
     
    Mais justement je ne sais pas comment l'ecrire avec un while ou un for

    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Breub62 Messages postés 3452 Statut Membre 369
     
    Fais le en pseudo langage d'abord. Ensuite si la logique(l'algo) est bonne tu peux le faire en vb
    0
  7. juliet
     
    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
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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)
      0
  8. juliet
     
    Merci pour l'info,

    mais ca ne marche toujours pas, ca met en jaune la ligne
    Do While Cu!.Cells(3, I) <> ""
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      je pense que CU!.Cells(3,I) pose problème.

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

      ;o)
      0
  9. juliet
     
    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
    0
  10. Moyjin Messages postés 138 Statut Membre 10
     
    i=i+1 a mettre juste devant le loop sinon tu reste sur le i=3
    0
  11. juliet
     
    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
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      ListBox1.AddItem = Worksheets("Cu").Cells(I, 2).Value)

      Tu boucles maintenant sur les lignes et non sur les colonnes !!! c'est voulu ?
      0
  12. juliet
     
    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
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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 ?
      0
  13. juliet
     
    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
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Enlève le = dans ListBox1.AddItem = Worksheets("Cu").Cells(2, I).Value

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