mardi 12 janvier 2010

Créer une liste déroulante dans un userform

  1. Ouvrez un nouveau Classeur Excel
  2. Sélectionnez le Menu Outil Macro Visual basic Editor [ou appuyez sur les touches CTRL + F11]
  3. Sélectionnez le Menu Affichage Boîte à outils [Afin d'avoir les outils nécessaires à la constitution de notre Userform]
  4. Sélectionnez le Menu Insertion Userform [Dès lors, une Userform vierge s'affiche - Cette Userform est est nommée Userform1 défaut]
  5. Cliquez sur l'outil Zone de liste modifiable


  6. Dessinez votre zone de liste déroulante


  7. Cliquez-droit sur le bouton sélectionnez l'option Propriétés
  8. Tapez les références de la feuille et des cellules concernées [Dans notre exemple : Feuil3!A1:A10]


  9. Double-cliquez sur la liste déroulante saisissez le code suivant :
    [A1] = UserForm1.ComboBox1
    
    A NOTER : Pour attribuer un Valeur par défaut sur une liste délourante, renseignez le champ Value par la valeur par défaut souhaitée


Autre solution : Initialiser une liste de choix dès l'ouverture du Userform
  1. Cliquez-droit sur le Userform concerné Tapez le code suivant :
    Private Sub UserForm_Initialize()
    
      ComboBox1.ColumnCount = 1
      ComboBox1.List() = Array("", "Pommes", "Poires", "Bananes")
    
    End Sub
Autre solution : Initialiser une liste de choix dès l'ouverture du Userform avec une liste issue d'une feuille Excel
  1. Créez votre liste dans une Feuille Excel
  2. Sélectionnez le Menu Insertion Nom Définir
  3. Attribuez un nom à cette liste
  4. Dessinez votre zone de liste déroulante sur le Userform concerné
  5. Double-cliquez sur la liste déroulante Entrez le code suivant
    Private Sub UserForm_Initialize()
    ComboBox1.RowSource = ("NomdelaListe")
    End Sub
    
Autre solution : Inserer les cellules A1:A10 dès l'ouverture du Userform dans un combobox
  1. Créez votre liste dans une Feuille Excel dans les cellules A1 à A10
  2. Dessinez votre zone de liste déroulante sur le Userform concerné
  3. Double-cliquez sur la liste déroulante Entrez le code suivant
    Private Sub UserForm_Initialize()
    Dim i
        For i = 1 To 10
            ComboBox1.AddItem Sheets("Feuil1").Cells(i, 1)
        Next
    End Sub
    
  4. A Savoir : Pour récupérer la valeur choisie dans la cellule A1 : [A1] = ComboBox1.Value ou [A1] = ComboBox1
Autre solution : Initialiser les données de la liste déroulante directment via VBA
Private Sub UserForm_initialize()

  With ComboBox1
     .AddItem "Pommes"
     .AddItem "Poires"
     .AddItem "Bananes"
     .AddItem "Fraises"
     .AddItem "Oranges"
 End With

End Sub
Autre solution : Initialiser les données de la liste déroulante directment via VBA en prenant une colonne précise jusqu'à la dernière cellule non vide
Set FL = ThisWorkbook.Sheets("Feuil1")  'Identification de la feuille concernée
Ligne = FLRange("D65536").End(xlUp).Row  Positionnement de la dernière cellule à récupérer


For i = 7 To Ligne            'Démarre à la ligne 7 jusqu'à la ligne définit dans la variable Ligne
    With Me.ComboBox1          
         .AddItem FL.Range("H" & i) 
    End With
Next i                    

End Sub

Aucun commentaire: