Les boîtes de dialogue

Boite de dialogue combinée.Retour au menu Contrôles divers

        Cette boîte de dialogue permet de mettre à jour les deux contrôles de droite
        (TextBox et ComboBox) suivant la sélection effectuée dans le contrôle de
        gauche (ListBox) et cela de manière dynamique.

        Le Userform (ListeDeroulanteCombinee)

        Le code

        Code lançant l'ouverture du Userform (ListeDeroulanteCombinee)

 
Sub AfficheListeDeroulanteCombinee()
      Sheets("Accueil").Activate
      Range("B2").Value = ""
      Range("C2").Value = ""
      Range("D2").Value = ""
      Application.ScreenUpdating = False
      ListeDeroulanteCombinee.Show
End Sub

        Code d'ouverture du formulaire par l'événement Activate

 
Private Sub UserForm_Activate()
Dim Arr() As String
Dim I As Integer, NbSheets As Integer
Dim Liste As Object
' Suppression des entrées de la liste si celle-ci en contient
If Onglets.ListCount >= 1 Then
Dim ElementListe As Integer
Dim NbreIt As Integer
        NbreIt = Onglets.ListCount - 1
        For ElementListe = NbreIt To 0 Step -1
                Onglets.RemoveItem (ElementListe)
        Next ElementListe
End If
' Ajout de toutes les entrées de la liste
NbSheets = Worksheets.Count
ReDim Arr(1 To NbSheets)
        For I = 2 To NbSheets
                Arr(I) = Worksheets(I).Name
                ListeDeroulanteCombinee.Onglets.AddItem Arr(I)
        Next I
        Onglets.ListIndex = 0
End Sub

        Code sur l'événement Change de la liste déroulante
        Onglets (Contrôle situé à gauche)

 
Private Sub Onglets_Change()
Dim OngletSelect As Integer
' Déterminer la ligne sélectionnée dans la liste déroulante
        OngletSelect = ListeDeroulanteCombinee.Onglets.ListIndex + 2
' Mise à jour TextBox Catégorie (contrôle en haut et à droite)
        ListeDeroulanteCombinee.Categorie = Sheets(OngletSelect).Range("C1").Value
' Mise à jour ComboBox Marque (contrôle en bas et à droite)
Dim DerniereMarque As String
        Sheets(OngletSelect).Activate
        DerniereMarque = Range("A1").End(xlDown).Address
        Marque.RowSource = "A1:" & DerniereMarque
        Marque.ListIndex = 0
End Sub

        Code des boutons

       1 / Bouton Valider
 
Private Sub Valider_Click()
       ListeDeroulanteCombinee.Hide
' Récupération des index en fonction de la sélection
       IndexOnglet = Onglets.ListIndex
       IndexModele = Marque.ListIndex
' Récupération des valeurs en fonction des index
       Onglet = Onglets.List(IndexOnglet)
       Modele = Marque.List(IndexModele)
       Rubrique = Categorie.Value
' Mise en place des valeurs dans la feuille de calcul
       Sheets("Accueil").Activate
       Range("B2").Value = Onglet
       Range("C2").Value = Rubrique
       Range("D2").Value = Modele
End Sub
        2 / Bouton Annuler
 
Private Sub Annuler_Click()
      ListeDeroulanteCombinee.Hide
End Sub

        Les données utilisées pour remplir la liste déroulante

Onglet Liste Voitures
Onglet Liste Motos
Onglet Liste Avions

        Un exemple de sélection avec le résultat inscrit dans
        la feuille de calcul

Retour au début de document

Retour au début du document