Ecrire dans LABELBOX sous conditions

Bonjour,

J'ai besoin de votre aide ayant un niveau assez basique de vba et des macros. J'espère donc avoir une réponse de votre part facile à assimiler. Merci vraiment.

Alors si on ouvre le fichier joint:

- on a deux colonnes oranges à gauche qui sont nos entrées. En cliquant sur l’objet "cliquez ici ", on retrouve dans le combobox ces entrées.

- Ensuite à droite, chaque animal a 4 colonnes, seul la colonne Yes/No nous importe (c’est pour ça que dans les autres il y a des points de suspension)

L’objectif est le suivant :

- L’utilisateur va commencer par cliquer sur l’objet « cliquez ici », va ensuite choisir quelle entrée de la combobox il veut.

- Puis il va cliquer sur le bouton « CONNU PAR ». En faisant cela, alors dans le labelbox, va apparaitre le nom de certains animaux. Plus précisément, supposons que l'utilisateur choisisse dans le combobox l'entrée "alpha : v1" alors en cliquant sur le bouton "CONNU PAR", il va apparaître dans le labelbox: "Gorille" car seul "Gorille" voit un "Yes" en face de l'entrée "alpha : v1".

Donc à chaque fois qu'il y a Y dans la case en face de l'entrée choisi, le labelbox nous dit le nom de l'animal qui a un Y.

Si je continue les exemples:

- si "beta : v2" a été choisi dans le combobox alors en cliquant sur "CONNU PAR", le labelbox nous affiche "Gorille" et "Singe".

- si "gamma : v8" a été choisi dans le combobox alors en cliquant sur "CONNU PAR", le labelbox nous affiche "Singe".

- si "zeta : x6" a été choisi dans le combobox alors en cliquant sur "CONNU PAR", le labelbox nous affiche "Gorille", "Singe" et "Chimpanzé".

Si vous avez des questions je suis preneur car j'ai vraiment besoin de votre aide

Merci beaucoup

23test-presence.xlsm (20.56 Ko)

bonjour,

Une possibilité :

Private Sub ComboBox1_Change()
iR = ComboBox1.ListIndex + 6
For i = 4 To 12 Step 4
SiD = Cells(4, i)
txt = IIf(Cells(iR, i) = "Y", txt & ", " & SiD, txt)
Next
Label1 = Mid(txt, 2)
End Sub

A+

Bonjour,

Je te remercie beaucoup parce que c'est ce que je voulais comme structure de code et comme résultat.

Seulement, là je l'ai adapté à une autre forme et je voulais avoir ton avis dessus s'il te plaît.

Private Sub CommandButton1_Click()

dim iR, SiD

dim txt as string

dim i as integer

iR=ComboBox1.ListIndex + 6 '+6 car les entrées commencent à la ligne 6 mais pourquoi combobox???'

For i = 4 to 120 Step 4 'balayage des noms d'animaux, jusqu'à 30 noms ici (120=30*4 colonnes) (peut-on utiliser EndColumn)'

SiD = Cells(4,i) 'nom des animaux'

If Cells(iR,i) = "Y" Then

txt = txt & ", " & SiD

Else

txt = txt 'donne à txt une valeur vide'

End if

Next

Label1=Mid ( txt, 2) 'renvoie une chaîne de caractère, ici txt. 2 afin de ne pas renvoyer la 1ère ", " . '

End Sub

Est-ce que cette nouvelle configuration est juste et ne génère pas d'erreurs ou d'effets secondaires indésirables?

Et est-ce que mes commentaires sont correctes?

Une dernière chose: je n'ai pas très bien compris le "iR", peut-tu m'en dire plus s'il te plaît.

Merci beaucoup

Bonjour,

iR c'est une variable qui stocke la Row de travail

ComboBox1.ListIndex renvoie des valeurs de 0 à 3 (suivant ce qui a été choisi...)

Donc iR (la ligne de travail va de 6 à 9)

txt = txt 'donne à txt une valeur vide inchangée

Pour le reste pas de pb.

A+

Ok merci ça m'a l'air clair.

Donc si on a une liste d'entrée de 20 mots à partir de la ligne 40 alors ComboBox1.ListIndex renvoie des valeurs de 0 à 19

et on écrirait iR=ComboBox1.ListIndex + 40.

J'ai bien compris?

A plus

Heu... pas forcément

il se trouve que dans ton exemple les entrées du combo se situent au même niveau que la première ligne des item YES/NO.

Si ce n'était pas toujours le cas il faudrait faire la différence entre la correspondance des lignes des 2 tableaux.

A+

OK je pense avoir compris maintenant.

Merci beaucoup galopin pour ton aide et tes explications.

A +

Rechercher des sujets similaires à "ecrire labelbox conditions"