Les boîtes de dialogue

Boite de dialogue avec liste déroulante modifiable.Retour au menu Contrôles divers

        Le Userform (ListeDeroulanteModifiable)

        Les contrôles

 
      Nom de la ComboBox = Constructeur
      Nom du CommandButton "Valider Choix" = OK
      Nom du CommandButton "Annuler" = Annuler

        Le code

        Code lançant l'ouverture de la boîte de dialogue

 
Sub AfficheListeDeroulanteModifiable()
      ListeDeroulanteModifiable.Show
End Sub

        Code d'ouverture du formulaire

 
Private Sub UserForm_Activate()
' Utilisation de l'option AddItem
Dim Arr() As String
Dim I As Integer, NbSheets As Integer
Dim Liste As Object
       Set Liste = Worksheets(1).Cells(1, 1).Resize(Worksheets("Feuil1") _
              .Cells(1, 1).CurrentRegion.Rows.Count - 1, 1)
       NbConstructeurs = Application.CountA(Range("A1").EntireColumn)
       ListeDeroulanteModifiable.Constructeur.Clear
ReDim Arr(1 To NbConstructeurs)
       For I = 1 To NbConstructeurs
              Arr(I) = Liste(I).Value
              ListeDeroulanteModifiable.Constructeur.AddItem Arr(I)
       Next
       Constructeur.ListIndex = 0
End Sub

        Code des boutons

       1 / Bouton OK
 
Private Sub OK_Click()
       ListeDeroulanteModifiable.Hide
       Application.ScreenUpdating = False
' Constructeur est le nom donné au contrôle ComboBox
       Marque = Constructeur.Value
       ' Stockage du choix effectué dans la liste déroulante en D2
       Range("D2").Value = Marque
       Columns("A:A").Select
On Error GoTo Ajoute
       Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _
       LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
       MatchCase:=False).Activate
       Range("A1").Select
       Exit Sub
Ajoute:
       ' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne A
       Range("A1").End(xlDown).Offset(1, 0).Value = Marque
       ' Tri des marques en ordre croissant
       Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
' Sélectionne la plage et recolore la plage des marques après ajout nouvelle marque
       With Worksheets(1)
              .Range(.[A1], .[A1].End(xlDown)).Select
       End With
       With Selection.Interior
              .ColorIndex = 20
              .PatternColorIndex = xlAutomatic
       End With
       Range("A1").Select
End Sub
        2 / Bouton Annuler
 
Private Sub Annuler_Click()
      ListeDeroulanteModifiable.Hide
End Sub

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

Retour au début de document

Retour au début du document