Associer un menu déroulant à un code VBA (private & public)

Bonjour à tous.

Je viens quérir votre aide aujourd'hui car il y a une étape que je dois rater dans l'association d'une maccro à un menu déroulant (ComboBox). Par ailleurs je souhaiterais associer une maccro (toujours à ma ComboBox) du type public dans un second point.

I/ Association d'une maccro à un ComboBox

Voici les étapes de la création

Je m'excuse par avance de ne pas vous mettre de fichiers joints, je n'ai pas accès (au travail) aux espaces de stockages et partages en ligne.

1) Je crée un menu déroulant dans contrôle Active X.

2) Je le place sur ma page Excel et j'ajoute une liste de numéros que je veux associer à ma ComboBox.

3) Sur ma combox box, je clique droit (mode création) --> visualiser le code

J'ajoute le code suivant :

Private Sub ComboBox1_Change()
Dim i
For i = 3 To 12
    ComboBox1.AddItem Sheets("Feuil1").Cells(i, 5)
Next
End Sub

Et là problème: ma ComboBox1 reste vide.

Le code semble bon et j'ai essayé avec d'autres maccro trouvées sur internet mais rien n'y fait...

II/ Associer une maccro de type public

Mon second problème, est que nous travaillons à plusieurs sur un fichier Excel ayant de très nombreux onglets. Nous avons donc fait le choix de travailler uniquement dans les modules, et donc d'utiliser des maccro du type public.

Comment pourrais-je rattacher une maccro public à ma ComboBox ?

Je vous remercie par avance pour votre aide.

J'imagine qu'il doit me manquer juste un détail mais je n'arrive pas à le trouver...

Bonjour ,

et si tu essaies de changer

Private Sub ComboBox1_Change()

par

Private Sub ComboBox1_DropButtonClick()

car pour ton alimenter ta liste selon ton code , il faudrait changer la valeur de ta combobox or et elle n'en possède pas

De plus je te conseil de déplacer ce code dans le module ThisWorkbook et de la placer dans l'évènement

Workbook_Open()

Comme cela ta liste se chargera à l'ouverture du classeur , ou bien tu peux choix un évènement plus approprié pour l'alimentation de ta liste

ensuite pour faire passer une macro en public il me semble que tu n'as qu'a remplacer private par

Public

Bonjour et merci pour ta réponse.

Peux-tu m'indiquer comment on change la valeur d'une ComboBox ?

J'ai mis ton code mais J'ai du rater un passage ....

Vu ton code, je comprend le message d'erreur...

Tu n'as pas enlever le code evenement de la combobox et il y a une déclaration en dehors d'une procédure

Je te propose de changer le code que tu as par

Private Sub Workbook_Open()
    Dim rList As Range, rCellule As Range
    Set rList = ThisWorkbook.Sheets("Feuil1").Range("E3:E12")
    For Each rCellule In rList
        ThisWorkbook.Sheets("Feuil1").ComboBox1.AddItem rCellule.Value
    Next
End Sub

Ensuite en ce qui concerne le changement de valeur de la combobox et bien c'est juste en allant cliquer sur un element qui est dans la combobox, mais comme il n'y en avait pas tu n'aurais pas pu faire un code sur cet évènement la

Bonjour SylChat

Je suis dsl mais je n'arrive pas à la faire fonctionner... J'ai ajouté ton code. Ensuite j'ai enregistré le tout, puis ré-ouvert le classeur pour que la liste se charge dans le menu déroulant... mais toujours rien ...

Peux tu joindre le fichier s'il te plait

Hello SylChat,

C'est bon. En ré-ouvrant le fichier ce matin cela fonctionnait.

Merci pour ton aide

Rechercher des sujets similaires à "associer menu deroulant code vba private public"