Bonjour à tous les lecteurs : Sur un exemple récupéré sur une formation j'aimerais améliorer l'exemple sur lequel j'ai déjà modifié l'UserForm, mais n'étant pas suffisamment performant dans l'écriture de code j'espère trouver une âme charitable pour m'aider à finir la conception de mon code.
Je joints quelques copies d'écran pour la compréhension.
Explication:
Recherche Type d’extraction :Combobox3 Liste déroulante : Région – Type ménage
Comment rendre dynamique les Labels en fonction du type d’extraction ainsi que les combobox 1 et 2.
De plus comment adapter les listes déroulantes en fonction du critère Type région ou Type ménage 1 ou 2
Exemple : Je choisis : Type ménage dans le type d’extraction : Dans la liste ménage 1 j’ai le choix entre Célibataire Couple ou Famille : Je choisis Célibataire ; Dans la liste ménage 2 On ne doit pas pouvoir choisir Célibataire un 2eme fois il doit me rester Couple et Famille et inversement.
Dernier critère à honorer Il faut pouvoir nommer la feuille ainsi extraite avec le nom choisi dans le type d’extraction : soit Région ou Type ménage puis les critères choisis dans les 2 listes déroulantes : par exemple Célibataire ou Famille. Ce qui donne par ex comme nom de feuille. Type ménage Célibataire Famille
Voici le code qui fonctionne mais n'est pas adapté à ce que je désire obtenir.
Par avance je vous remercie.
Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 Private Sub Btn_Extraction_Type_de_ménage_Click() 'Déclaration des variables. Dim Ma_liste_menage As Range Dim Liste_region As Range Dim NbLignes As Long Dim LigneActive As Long 'Affectation des variables Set Liste_des_Regions = Données.Range("A2", Données.Range("A1").End(xlDown)) NbLignes = Liste_des_Regions.Rows.Count LigneActive = 0 'On insere une nouvelle feuille. Sheets.Add 'L'idée est de nommer la feuille selon la région sélectionnée. 'If MaRegion.Offset(1, 6).Value = Me.ComboBox1_Régions.Value Then 'On extrait la ligne de titre Données.Range("A1").EntireRow.Copy ActiveCell Range("A2").Select 'On boucle chaque région se trouvant dans la liste. For Each Ma_liste_menage In Liste_des_Regions '= nom de la feuille liste des régions colonne 2 'On se décale d'une ligne vers le bas LigneActive = LigneActive + 1 'On recherche la région qui à été saisie dans la liste déroulante If Ma_liste_menage.Offset(0, 9).Value = Me.ComboBox1_Type_ménage_1.Value Then 'Valeur 9 = démarre l'extraction après la colonne 9 'Si la région est trouvée alors on récupére l'enregistrement du client. Ma_liste_menage.EntireRow.Copy ActiveCell ActiveCell.Offset(1, 0).Select End If If Ma_liste_menage.Offset(0, 9).Value = Me.ComboBox2_Type_ménage_2.Value Then 'Valeur 9 = démarre l'extraction après la colonne 9 'Si la région est trouvée alors on récupére l'enregistrement du client. Ma_liste_menage.EntireRow.Copy ActiveCell ActiveCell.Offset(1, 0).Select End If 'On paramèttre la barre de progression Me.ProgressBar1.Value = (LigneActive / NbLignes) * 100 Next Ma_liste_menage 'Mise en forme des Extractions 'On va ajuster la largeur des colonnes des tableaux Range("A1").Select ActiveCell.CurrentRegion.EntireColumn.AutoFit Unload Me 'On ferme le formulaire 'INFORMATION: Row source = Liste_des_Régions Charge la liste des régions de la combobox End Sub
Partager