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


A voir également:

13 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   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
sapma Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   5
 
c'est du VBA.
ComboBox1 = "XXX" tu vérifies quoi par cette expression ?
0
juliet
 
Mais justement je ne sais pas comment l'ecrire avec un while ou un for


Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Fais le en pseudo langage d'abord. Ensuite si la logique(l'algo) est bonne tu peux le faire en vb
0
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
juliet
 
Merci pour l'info,

mais ca ne marche toujours pas, ca met en jaune la ligne
Do While Cu!.Cells(3, I) <> ""
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
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
Moyjin Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   10
 
i=i+1 a mettre juste devant le loop sinon tu reste sur le i=3
0
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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
juliet
 
merci beaucoup , ca marche comme je veux
0