Liste déroulante vba

Tito.5310 Messages postés 1 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour à tous

En vba on peut créer des listes déroulantes, j'ai appris à le faire avec des tutoriels, seulement les différents choix sont présent sur une feuille de calcule
Pour un rendu finale, je voudrait que cette liste ne soit pas visible.

Est ce qu'il est possible de masquer la feuille concernée, pour obtenir un formulaire propre ?

1 réponse

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Bien sur, il suffit d'afficher la feuille avant le remplissage de la Combobox et ensuite de la masquer comme ceci avec un UserForm:

    Private Sub UserForm_Initialize()
        Dim j As Integer
         Sheets("Feuil3").Visible = True
        Sheets("Feuil3").Select
        'Récupère les données de la colonne A...
        For j = 1 To Range("A65536").End(xlUp).Row
            ComboBox2 = Range("A" & j)
            '...et filtre les doublons
            If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Range("A" & j)
        Next j
         Sheets("Feuil3").Visible = False
    End Sub


    Voici une méthode avec une liste déroulante de formulaire (Feuille)
    Les données pour remplir la combobox sont stockées dans un tableau:
    Formule-Gestionnaire de noms
    Mettre ce code dans le module de la feuille concernée:

    Option Explicit
    'Allez dans Formule- Gestionnaire de nom pour voir le tableau
    Sub SauvTab()
    Dim A As Variant
    A = Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aoùt", "septembre", "octobre", "novembre", "decembre")
    Names.Add Name:="MonTableau", RefersTo:=A
    Names("MonTableau").Visible = False 'cache le tableau, mettre à True pour le voir
    End Sub
    Sub RécupTab()
    Dim monTab As Variant
    Dim i
    monTab = [MonTableau]
    ComboBox1.Clear
     For i = 1 To 12
     ComboBox1.AddItem (monTab(i))
     Next
     ComboBox1.ListIndex = 0
    End Sub
    Private Sub ComboBox1_Change()
    MsgBox ComboBox1.Value
    End Sub
    Private Sub Worksheet_Activate()
    SauvTab
    RécupTab
    End Sub
    


    Voilà 2 méthodes

    0