Lier ComboBox à une ListBox

Steeve

XLDnaute Nouveau
Bonjour,

J'ai sur un onglet "Liste agent" une liste d'agent avec différentes informations et sur un autre onglet "Accueil", un bouton avec le quel je voudrai supprimer un agent.
Lorsque je clique sur ce bouton "Supprimer", j'ai créé une petite fenêtre avec une ComboBox et une ListBox.
J'aimerai que dans cette ComboBox s'affiche tout les agents présents dans l'onglet "Liste agent" en sachant que cette liste peut se modifier. Et donc lorsque je sélectionne un agent, j'aimerai que dans la ListBox s'affiche les différentes informations concernant cet agent ..

J'ai cherché un peu partout sur les forums mais je n'ai pas trouvé ..
Merci d'avance !
Steeve
 

Pièces jointes

  • classeur1.xlsm
    38.8 KB · Affichages: 122
  • classeur1.xlsm
    38.8 KB · Affichages: 135
  • classeur1.xlsm
    38.8 KB · Affichages: 139

Dranreb

XLDnaute Barbatruc
Re : Lier ComboBox à une ListBox

Bonjour.
Le principe c'est de renseigner la propriété List du ComboBox, notamment en y affectant directement un tableau de Variant tel qu'en constitue la propriété Value d'un plage. De cette façon sa propriété ListIndex contiendra le numéro-1 de la ligne dont on doit garnir la ListBox lorsqu'on sélectionnera un agent.
À +
 

Steeve

XLDnaute Nouveau
Re : Lier ComboBox à une ListBox

Bonjour Dranreb,
Merci pour l'attention que tu portes à mon problème. Je ne suis pas un As de la programmation, j'ai quelques notions que j'ai acquis au fil du temps et là j'avoue que je n'ai pas très bien compris ce que tu voulais me dire .. Si tu pouvais me donner un morceau de code se serait déjà plus explicite ..
Je suis preneur si d'autres personnes à une solution pour moi :)
Merci d'avance !
Steeve
 

Dranreb

XLDnaute Barbatruc
Re : Lier ComboBox à une ListBox

Il y a une autre manière d'alimenter la ComboBox: c'est de lui affecter le nom de la plage à sa propriété RowSource dans la fenêtre de propriétés. Ça implique de nommer les plages, ce qui est une excellente chose.
Moi je ne sais pas ce que vous voulez mettre ni saisir dans la ComboBox, vous ne l'avez jamais dit. Plusieurs colonnes sont possibles. Voir propriétés ColumnsCount, TextColumn, BoundColumn, et ColumnWidths.
À +
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lier ComboBox à une ListBox

Sous VBA la touche F4 permet d'afficher la fenêtre de propriétés. Clique sur ta ComboBox et regarde ce qu'il faut y mettre. Touche F1 pour avoir de l'aide sur les différentes propriétés. Sous Excel 2003: Insersion, Noms, Définir pour donner des noms aux plages, ce qui permet ensuite des formules plus claires et des macros indépendantes de l'emplacement des plages de données qu'elles traitent.
 

Steeve

XLDnaute Nouveau
Re : Lier ComboBox à une ListBox

Oh mais c'est parfait ça, je n'avais pas compris que tu me parlais de la fenêtre propriété de la ComboBox pourtant tu avais été très clair. Donc ça fonctionne parfaitement pour l'affectation de valeur dans la ComboBox, je te remercie !
Une dernière question si tu as encore du temps à m'accorder, comment je pourrais afficher le descriptif de l'agent selectionné ?
Merci d'avance !
 

Steeve

XLDnaute Nouveau
Re : Lier ComboBox à une ListBox

Tu vas finir par m'envoyer bouler je pense mais j'ai testé plusieurs codes différents mais ça ne fonctionne pas. Ça me donne une erreur de syntaxe ..

Voici ce que j'ai testé (je suis débutant en vba donc on ne se moque pas ! :) )

Private Sub ComboBox_Camion_Change()

ComboBox_Camion.ListIndex + 1 (Agent)

End Sub

'ComboBox_Camion = au nom de ma ComboBox
'Agent c'est la plage défini dans le gestionnaire des noms
' et le nom de ma ListBox où doit s'afficher mes données c'est ListBox_Descriptif

Merci d'avance !
 

Dranreb

XLDnaute Barbatruc
Re : Lier ComboBox à une ListBox

je suis débutant en vba donc on ne se moque pas !
Loin de moi cette idée.
Essayez ça:
VB:
Dim L as Long
L = ComboBox_Camion.ListIndex + 1
ListBox_Descriptif.Clear
If L > 0 Then
   ListBox_Descriptif.AddItem Feuil1.[Agent].Rows(L).Value
   ListBox_Descriptif.AddItem Feuil1.[De].Rows(L).Value
   ListBox_Descriptif.AddItem Feuil1.[La].Rows(L).Value
   ListBox_Descriptif.AddItem Feuil1.[Circulation].Rows(L).Value
   End If
Avec Feuil1 le CodeName de la feuille contenant les plage Agent, De, La, Circulation.
À +
 

Steeve

XLDnaute Nouveau
Re : Lier ComboBox à une ListBox

Merci pour la peine que tu te donnes, c'est très gentil.
Donc j'ai modifié à ma sauce et je l'ai mis donc dans mon fichier et ça me donne une erreur d’exécution 424 ..
Je te joins le fichier, si tu as 5 minutes cette après-midi à me consacrer ce serait sympa.

J'ai absolument besoin de cette commande pour mon projet ..
Merci d'avance ! :)
 

Pièces jointes

  • classeur1.xlsm
    37.8 KB · Affichages: 118
  • classeur1.xlsm
    37.8 KB · Affichages: 133
  • classeur1.xlsm
    37.8 KB · Affichages: 147

Fo_rum

XLDnaute Accro
Re : Lier ComboBox à une ListBox

Bonjour,

Une autre exemple : 2 colonnes pour la liste déroulante, la seconde servant à gérer les numéros de lignes (information utilisée pour la suppression de la ligne).

Je n'ai pas jugé utile de renommer les contrôles (si peu nombreux que les risques de confusion sont réduits).
 

Pièces jointes

  • Combo&ListBox.xls
    48 KB · Affichages: 224

Dranreb

XLDnaute Barbatruc
Re : Lier ComboBox à une ListBox

Regarde dans l'explorateur de projet cette fois, le CodeName de la feuille Excel "Liste agent" c'est Feuil39 et non pas Liste_agent.
Remarque: ça peut se changer dans la fenêtre de propriétés à la première ligne, en face de "(Name)".
FLstAgt me semblerait pas mal. En tout cas c'est le nom que je donnerais moi, mais je suis peut être tout seul dans ma tête...
En attendant, pour enrichir la chose, je propose :
VB:
Private Sub ComboBox_Agent_Change()
Dim L As Long, VL() As Variant, C As Long
L = ComboBox_Agent.ListIndex + 1
ListBox_Descriptif.Clear
If L > 0 Then
   VL = Feuil39.[Agent].Rows(L).EntireRow.Value
   For C = 1 To 9
      ListBox_Descriptif.AddItem VL(1, C)
      Next C
   End If
End Sub

Attention: j'ai eu des échos par XLDnautes selon lesquels la propriété RowSource s’accommoderait mal de plages dynamiques.
Si ça venait à se confirmer, ne plus la renseigner mais ajouter cette procédure :
VB:
Private Sub UserForm_Initialize()
ComboBox_Agent.List = Feuil39.[Agent].Value
End Sub
Personnellement je n'ai jamais pu rencontrer le problème car dans de telles applications mes plages nommées sont fixes, et je veille par programmation à ce qu'elles couvrent toujours exactement la partie effectivement utilisée.
À +
 

Steeve

XLDnaute Nouveau
Re : Lier ComboBox à une ListBox

Bonjour Dranreb et Fo_rum,
J'ai fait un mixe de vos propositions et cela marche parfaitement, j'ai ce que je voulais ! :)
Je vous remercie énormément pour votre aide, c'est très gentil.
Bonne journée à vous.
A bientôt, Steeve.
 

Discussions similaires

  • Question
Microsoft 365 Listbox
Réponses
3
Affichages
266
Réponses
9
Affichages
702
Réponses
46
Affichages
3 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet