Liste déroulante vba

[Fermé]
Signaler
Messages postés
1
Date d'inscription
vendredi 16 juin 2017
Statut
Membre
Dernière intervention
16 juin 2017
-
Messages postés
7569
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2021
-
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

Messages postés
7569
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2021
664
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