4 pièce(s) jointe(s)
Extraction de données par UserForm
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:
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 |