Liste deroulante dans un Userform
Résolu/Fermé
Mistral_13200
Patrice33740
- Messages postés
- 591
- Date d'inscription
- mardi 5 août 2008
- Statut
- Membre
- Dernière intervention
- 7 novembre 2021
Patrice33740
- Messages postés
- 8549
- Date d'inscription
- dimanche 13 juin 2010
- Statut
- Membre
- Dernière intervention
- 7 mai 2022
A voir également:
- Vba liste déroulante userform
- Userform liste déroulante - Meilleures réponses
- Liste déroulante userform vba - Meilleures réponses
- Liste déroulant dans Userform Via liste Excel - Forum - VB / VBA
- Liste deroulante dans un Userform ✓ - Forum - Excel
- Intégrer une liste déroulante de validation dans un UserForm ✓ - Forum - VB / VBA
- Liste deroulante userform et petit tableau dans l'userform - Forum - Excel
- Comment créer un userform liste déroulante ? - Forum - Excel
3 réponses
Patrice33740
15 août 2018 à 09:20
- Messages postés
- 8549
- Date d'inscription
- dimanche 13 juin 2010
- Statut
- Membre
- Dernière intervention
- 7 mai 2022
15 août 2018 à 09:20
Bonjour,
1) Il faut absolument éviter les .Select, ActiveCell, Selection, ... en VBA.
2) il faut éviter de déclarer toutes les variables avec une portée globales, il faut limiter leur portée au strict nécessaire.
J'aurais écrit ton code comme ceci :
--
Cordialement
Patrice
1) Il faut absolument éviter les .Select, ActiveCell, Selection, ... en VBA.
2) il faut éviter de déclarer toutes les variables avec une portée globales, il faut limiter leur portée au strict nécessaire.
J'aurais écrit ton code comme ceci :
Option Explicit Private Sub UserForm_Initialize() ' Procédure permettant d'initailiser ' les données de la liste Rubrique. Dim colonne As Long ' Initialisation des Variables. colonne = 2 ' Numéro de la Première colonne. ' Création d'une boucle pour charger toutes les rubriques. With Sheets("Donnees") Do While .Cells(2, colonne).Value <> "" ' Tant qu'il y a des valeurs sur la ligne 2. FrmSaisie.CboRubriques.AddItem .Cells(2, colonne).Value colonne = colonne + 1 Loop End With End Sub Private Sub CboRubriques_Change() ' Procédure permettant d'initialiser ' les données de la liste Sous-Rubrique. Dim i As Long Dim j As Long Dim colonne As Long ' Initialisation variables. i = 2 ' On vide la liste des sous-rubriques. FrmSaisie.CboSousRubriques.Clear ' On travaille sur la feuille données With Sheets("Donnees") ' On boucle pour récupérer les sous rubriques de chaque rubriques. Do While .Cells(2, i).Value <> "" ' On test que le nom de rubriques soit bien identique. If .Cells(2, i).Value = FrmSaisie.CboRubriques.Value Then ' Si oui ' Récupération du N° de colonne colonne = .Cells(2, i).Column End If i = i + 1 Loop ' On initialise le numéro de ligne à 3. j = 3 ' On boucle sur les colonnes pour récupérer les sous-rubriques. Do While .Cells(j, colonne).Value <> "" ' On charge les villes dans la liste déroulante FrmSaisie.CboSousRubriques.AddItem .Cells(j, colonne) j = j + 1 Loop End With ' On affiche la première valeur par défaut. CboSousRubriques.ListIndex = 0 End Sub Private Sub BtnFermeture_click() Unload Me End Sub
--
Cordialement
Patrice