Remplis plusieurs listes déroulantes avec les mêmes items

JMV83390

XLDnaute Nouveau
Bonjour à tous,

Je me heurte au problème suivant. A savoir, mon application contient sur une feuille, 100 listes déroulantes contenant pour chacune d'elles, les mêmes items.

Ces liste déroulantes sont nommées liste1, liste2, liste3 ......

Pour remplir chacune de ces listes déroulantes, j'utilise le code VBA classique suivant :

Sheets("Rappel5").liste1.AddItem "Sélectionnez la nature ..."
Sheets("Rappel5").liste1.AddItem "AA"
Sheets("Rappel5").liste1.AddItem "BB"
Sheets("Rappel5").liste1.AddItem "CC"
Sheets("Rappel5").liste1.AddItem "DD"
Sheets("Rappel5").liste1.AddItem "EE"

.....


Donc pour remplir mes listes déroulantes, j'utilise 100 fois le code ci-dessus !

D'où question ;-)

Est-ce qu'il existe une "combine" qui me permettrait de réduire le code VBA de remplissage des listes déroulantes ?

Je pensais à un tableau contenant tous les noms des listes déroulantes lié à une boucle qui passe le tableau en revue et me remplit les listes déroulantes.
Mais bon ... je ne sais pas trop comment faire ?

Si quelqu'un sur ce forum a déjà connu le même problème, je suis preneur de la solution qu'il a mise en place.

Merci d'avance

Jean-Marc
 

JMV83390

XLDnaute Nouveau
Re : Remplis plusieurs listes déroulantes avec les mêmes items

Bonjour,

Voici, comme demandé, un fichier exemple.

Mon but est donc de réduire le code de chargement des listes déroulantes se trouvant dans le Workbook_Activate().

Merci

JM
 

Pièces jointes

  • FICHIER DE TEST.xlsm
    30.9 KB · Affichages: 40

laetitia90

XLDnaute Barbatruc
Re : Remplis plusieurs listes déroulantes avec les mêmes items

re tous :):)

en complement

si on passe par For Each & autre active x sur la feuile va poser pb....
il faut mettre une condition gerer TypeOf

Code:
Private Sub Workbook_Activate()
 Dim C As OLEObject
 For Each C In Feuil1.OLEObjects
 If TypeOf C.Object Is MSForms.ComboBox Then _
 C.Object.List = Array("Sélectionnez la nature ...", "AA", "BB", "CC", "DD", "EE")
 Next C
End Sub

autrement on peut le faire avec for next

Code:
Dim i As Byte
 For i = 1 To 5
 Feuil1.OLEObjects("ComboBox" & i).Object.List = _
 Array("Sélectionnez la nature ...", "AA", "BB", "CC", "DD", "EE")
 Next i
 

Statistiques des forums

Discussions
315 091
Messages
2 116 117
Membres
112 664
dernier inscrit
jujubaroude