Si élément sélectionné dans listbox multiselect alors

jecirbe

XLDnaute Junior
Bonjour
je fais appel à vous car je m'arrache les cheveux sur ce petit pb. J'ai 3 listbox liées, code qui fonctionne trèsbien car trouver sur le site de Monsieur JB (boisgontierjacques.free.fr/).
Ce que j'essaye de faire c'est si le premier item est sélectionné dans ma première listbox alors il m'affiche un label en dehors des listbox bien sûr. Ca c'est ok. mais si je dé selectionne (erreur de séléction par exemple) ce même item j'aimerai que le label disparaisse à nouveau.
J'ai ben sûr essayer avec un if .... else mais la "disparition" du label ne se fait pas
Je vous mets un petite fichier pour que ce soit plus parlant.Merci d'avance
 

Pièces jointes

  • gestion allégée.xlsm
    62.8 KB · Affichages: 75

CHALET53

XLDnaute Barbatruc
Bonjour,

Peut-être comme ceci

Private Sub LBxMotif_Change()

Me.LBxPart.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[A2], f.[A1048576].End(xlUp))
For k = 0 To Me.LBxMotif.ListCount - 1
If Me.LBxMotif.Selected(k) = True Then
If Me.LBxMotif.ListIndex = 0 Then
Label13.Visible = True
Else

Label13.Visible = False
End If

If c = Me.LBxMotif.List(k, 0) Then
temp = c.Offset(, 1)
mondico(temp) = temp
End If
End If
Next k
Next c

Me.LBxPrecis.List = mondico.Items

End Sub

a+
 

Bebere

XLDnaute Barbatruc
bonjour Jecirbe,Chalet
Private Sub LBxMotif_Change()
Me.LBxPart.Clear
If Compte Then
Label13.Visible = True
Else
Me.Label13.Visible = False
End If
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[A2], f.[A1048576].End(xlUp))
For k = 0 To Me.LBxMotif.ListCount - 1
If Me.LBxMotif.Selected(k) = True Then
If c = Me.LBxMotif.List(k, 0) Then
temp = c.Offset(, 1)
mondico(temp) = temp
End If
End If
Next k
Next c
Me.LBxPrecis.List = mondico.Items

End Sub

Function Compte() As Boolean
For k = 0 To Me.LBxMotif.ListCount - 1
If k = 0 And Me.LBxMotif.Selected(k) = True Then Compte = True:exit for
Next
End Function
 

jecirbe

XLDnaute Junior
Bonjour Bebere
je vais essayer ta version même si j'ai trouvé une solution qui fonctionne. J'ai rajouté un évènement sur un mouseUp sur le listbox.
Mais ta version m'intéresse car j'ai encore du mal avec les fonctions même si je connais leur intérêts
A+
 

jecirbe

XLDnaute Junior
Test fait
MERCI!!!! Bebere ça marche nickel chrome mieux que mon évènement donc je garde
A bientôt ( oui oui car j'ai un gros os auquel je m'attaque - j'y suis dessus depuis 2 jours - mais si je n'y arrive je sais où trouver de l'aide)
Bonne journée
 

Si...

XLDnaute Barbatruc
salut

Si... cela t’intéresse voici 2 versions avec des codes réduits.
Nota : dans la seconde, on utilise des tableaux avec leurs avantages. Si on n’en veut pas on peut encore utiliser des zones nommées.
 

Pièces jointes

  • de liste en liste(usf).xlsm
    55 KB · Affichages: 80
  • Tableaux de liste en liste(usf).xlsm
    42.8 KB · Affichages: 79

jecirbe

XLDnaute Junior
Bonjour SI...
Merci pour tes propositions mais ça marche pas comme je l'attends :-(
En fait mon problème se situait au niveau de la détection du premier item de la première listbox pour faire apparaitre l'item ( qui est juste à ce stade un test élémentaire car j'ai un soucis "d'algorithme" que je ne sais pas résoudre pour le moment que je vous soumettrais peut être
Mais je vais étudier tes codes pour apprendre
 

Si...

XLDnaute Barbatruc
Re

Bonjour SI...
Merci pour tes propositions mais ça marche pas comme je l'attends désolé pour la mauvaise réponse:confused:
En fait mon problème se situait au niveau de la détection du premier item de la première listbox pour faire apparaitre ...

Comme je l’ai compris : pour faire apparaître l'étiquette à la sélection du premier item de la liste, essaie ce
VB:
Private Sub LBxMotif_Change()
  LBxPart.Clear
  Set Dico = CreateObject("Scripting.Dictionary")
  For k = 0 To LBxMotif.ListCount - 1
    For Each C In Range(f.[B2], f.[B1048576].End(xlUp))
      If LBxMotif.Selected(k) And C(1, 0) = LBxMotif.List(k, 0) Then: Dico(C.Value) = ""
    Next
  Next
  LBxPrecis.List = Dico.Keys
  Label13.Visible = LBxMotif.Selected(0) = 1
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 496
Messages
2 088 982
Membres
103 997
dernier inscrit
SET2A