Initialisation des combobox

Signaler
Messages postés
24
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
4 avril 2013
-
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
-
Salut à tous,
J'ai crée sur un document plusieurs combobox qui figure sur la première feuille de celui-ci.
Chaques combobox (3 au total), présente une liste déroulante des pages de mon documennt avec un bouton d'action à côté de chaque combobox qui amène l'utilisateur à la page sélectionné.

Le seul problème, c'est qu'au lancement du document, la liste déroulante de la combobox est vide et n'apparait qu'après avoir cliqué sur le bouton d'action "Go".

Voila le code de la combobox:

Private Sub Combobox1_Click()

     ComboBox1.AddItem Sheets("feuille 1").Name
     ComboBox1.AddItem Sheets("feuille 2").Name
     ComboBox1.AddItem Sheets("feuille 3").Name

End Sub

Voila le code du bouton d'action associé:

Private Sub CommandButton1_Click()

   If ComboBox1.Text = "" Then
         MsgBox ("Choisissez une feuille"), vbInformation, "IDAE"
        Else
         nom = ComboBox1.Text
         Sheets(nom).Select

   End If

   ComboBox1.Clear
   ComboBox1.AddItem Sheets("feuille 1").Name
   ComboBox1.AddItem Sheets("feuille 2").Name
   ComboBox1.AddItem Sheets("feuille 3").Name

End Sub

La fin du code du bouton d'action est le seul moyen que j'ai trouvé pour éliminer les doublons dans la combobox^^.
Donc si qq1 pouvait m'éclairer là-dessus aussi, merci d'avance.

4 réponses

Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
1
Salut,

Pour initialiser une ComboBox tu as deux solutions :

   - Soit tu vas dans l'interface de conception de ton formulaire (sous Visual Studio, tu fais Maj + F7). Dans celle-ci, tu sélectionne ton ComboBox, et tu regardes la propriété Items. Tu cliques sur les trois petits points à côté de la propriété et tu peux ajouter les lignes que tu veux.

   - Soit tu l'initialise au démarrage de ton formulaire. Ici, tu as mis

Private Sub Combobox1_Click()

     ComboBox1.AddItem Sheets("feuille 1").Name
     ComboBox1.AddItem Sheets("feuille 2").Name
     ComboBox1.AddItem Sheets("feuille 3").Name

End Sub

   - Or, on voit que tu n'as mis aucun code pour initialiser ton controle. Je ne connais pas la syntaxe VBA mais je te conseilles de faire ça :

   - Au démarrage du formulaire/du soft : ComboBox1.Additem ...
   - Lors du click sur le bouton, tu fais

If ComboBox1.Text = "" Then

         MsgBox ("Choisissez une feuille"), vbInformation, "IDAE"

        Else

         nom = ComboBox1.Text
         Sheets(nom).Select

   End If

En espérant t'avoir aidé,

-Papymuzo-
Messages postés
24
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
4 avril 2013

J'ai bien un peu tout essayé sa ne fonctionne pas.
Il n'y a pas un code en particulier a taper pour que les listes déroulantes s'initialise d'elle même sans que j'ai besoin de cliquer sur ce fameux bouton d'action "Go"?
Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
1
Il y a surement un événement qui se déclenche lors de l'ouverture de ton soft ?

Un peu comme Form_Load ?
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Il me semble qu'il faut installer un Combo par feuille, pour selectionner les autres feuilles.
Le chargement de ces combos se fera à l'ouverture du classeur, donc mise en places de celles-ci, ecriture des codes dans les modules appropriés, sauvegarde et fermeture du classeur puis à la réouverture de celui-ci, tout sera prêt d'emploi.

' Module du classeur actif, "ThisWorkBook" du projet
Private Sub Workbook_Open()

      ' init du combo dans la feuille 1
     Sheets(1).ComboBox1.AddItem Sheets(2).Name
     Sheets(1).ComboBox1.AddItem Sheets(3).Name

     ' init du combo dans la feuille 2
     Sheets(2).ComboBox2.AddItem Sheets(1).Name
     Sheets(2).ComboBox2.AddItem Sheets(3).Name

     ' init du combo dans la feuille 3
     Sheets(3).ComboBox3.AddItem Sheets(1).Name
     Sheets(3).ComboBox3.AddItem Sheets(2).Name

' Module de la feuille 1
Private Sub ComboBox1_Change()
    Sheets(ComboBox1.Text).Select
End Sub

' Module de la feuille 2
Private Sub ComboBox2_Change()
    Sheets(ComboBox2.Text).Select
End Sub

' Module de la feuille 3
Private Sub ComboBox3_Change()
    Sheets(ComboBox3.Text).Select
End Sub

End Sub

CNTJC