Combobox et ouverture de feuilles
Résolu/Fermé
metek18
Messages postés
10
Date d'inscription
jeudi 9 juillet 2015
Statut
Membre
Dernière intervention
26 avril 2016
-
10 juil. 2015 à 15:56
metek18 Messages postés 10 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 26 avril 2016 - 23 juil. 2015 à 14:15
metek18 Messages postés 10 Date d'inscription jeudi 9 juillet 2015 Statut Membre Dernière intervention 26 avril 2016 - 23 juil. 2015 à 14:15
A voir également:
- Combobox et ouverture de feuilles
- Feuilles diddl valeur ✓ - Forum Graphisme
- Samia, kevin et jason ont gardé la trace de leurs ventes quotidiennes du mois de juillet 2016. dans la feuille bilan, il manque les résultats de jason. insérez une colonne entre samia et kevin et reportez-y les résultats de jason. quel mot secret apparait en f2 ? - Forum Excel
- Fusionner feuilles excel - Guide
- Combobox vba ✓ - Forum VB / VBA
- Une erreur est survenue lors de l'ouverture de ce document. accès refusé - Forum Bureautique
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
10 juil. 2015 à 16:23
10 juil. 2015 à 16:23
Bonjour,
Ce que je ferais :
Utiliser les événement _Click() des 4 comboboxes, comme ceci :
1- ComboBox1_Click()
=> Remplit une variable tableau des noms de feuilles ou on trouve le contenu de ComboBox1 en B1
=> Vide ComboBox2
=> Remplit ComboBox2 avec les noms situés en B3 des feuilles référencées dans la variable tableau
2- ComboBox2_Click()
=> remplit une variable tableau (à partir de la première variable tableau) des noms de feuilles ou on trouve le nom choisi en B3
======> on a donc ici le nom des feuilles valides pour B1 et B3
=> vide ComboBox3
=> Remplit ComboBox3 avec les années situés en J1 des feuilles référencées dans la variable tableau
3- ComboBox3_Click()
=> remplit une variable tableau (à partir de la seconde variable tableau) des noms de feuilles ou on trouve l'année choisie en J1
======> on a donc ici le nom des feuilles valides pour B1 et B3 et J1
=> vide ComboBox4
=> Remplit ComboBox avec les mois situés en J2 des feuilles référencées dans la variable tableau
4- ComboBox4_Click()
=> Cherche, dans la variable tableau précédente, les feuilles correspondante au mois choisi.
Si tu veux une maquette, il faudra nous fournir un exemple de fichier anonymisé.
Ce que je ferais :
Utiliser les événement _Click() des 4 comboboxes, comme ceci :
1- ComboBox1_Click()
=> Remplit une variable tableau des noms de feuilles ou on trouve le contenu de ComboBox1 en B1
=> Vide ComboBox2
=> Remplit ComboBox2 avec les noms situés en B3 des feuilles référencées dans la variable tableau
2- ComboBox2_Click()
=> remplit une variable tableau (à partir de la première variable tableau) des noms de feuilles ou on trouve le nom choisi en B3
======> on a donc ici le nom des feuilles valides pour B1 et B3
=> vide ComboBox3
=> Remplit ComboBox3 avec les années situés en J1 des feuilles référencées dans la variable tableau
3- ComboBox3_Click()
=> remplit une variable tableau (à partir de la seconde variable tableau) des noms de feuilles ou on trouve l'année choisie en J1
======> on a donc ici le nom des feuilles valides pour B1 et B3 et J1
=> vide ComboBox4
=> Remplit ComboBox avec les mois situés en J2 des feuilles référencées dans la variable tableau
4- ComboBox4_Click()
=> Cherche, dans la variable tableau précédente, les feuilles correspondante au mois choisi.
Si tu veux une maquette, il faudra nous fournir un exemple de fichier anonymisé.
metek18
Messages postés
10
Date d'inscription
jeudi 9 juillet 2015
Statut
Membre
Dernière intervention
26 avril 2016
Modifié par metek18 le 10/07/2015 à 17:32
Modifié par metek18 le 10/07/2015 à 17:32
Comment poster un fichier sur le forum ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
11 juil. 2015 à 09:18
11 juil. 2015 à 09:18
Bonjour,
Essaie ceci :
en entête du module de l'userform, avant toute procédure ou fonction, déclare :
Ensuite, dans le code, copie-colle ceci (adapte les noms des comboboxes) :
Je ne serais pas de retour ici avant mercredi!
Bon week end
Essaie ceci :
en entête du module de l'userform, avant toute procédure ou fonction, déclare :
'En entête de module Private Tab1(), Tab2(), Tab3(), Tab4()
Ensuite, dans le code, copie-colle ceci (adapte les noms des comboboxes) :
Private Sub ComboBox1_Click()
Erase Tab1: ComboBox2.Clear
Dim Ws As Worksheet, cpt As Integer
For Each Ws In ThisWorkbook.Worksheets
With Ws
If CStr(.Range("B1")) = ComboBox1 Then
ReDim Preserve Tab1(cpt)
Tab1(cpt) = .Name
cpt = cpt + 1
Me.ComboBox2.Value = .Range("B3")
If Me.ComboBox2.ListIndex = -1 Then Me.ComboBox2.AddItem .Range("B3")
End If
End With
Next
End Sub
Private Sub ComboBox2_Click()
Erase Tab2: ComboBox3.Clear
Dim Ws As Worksheet, cpt As Integer
For Each Ws In ThisWorkbook.Worksheets(Tab1)
With Ws
If CStr(.Range("B3")) = ComboBox2 Then
ReDim Preserve Tab2(cpt)
Tab2(cpt) = .Name
cpt = cpt + 1
Me.ComboBox3.Value = .Range("J1")
If Me.ComboBox3.ListIndex = -1 Then Me.ComboBox3.AddItem .Range("J1")
End If
End With
Next
End Sub
Private Sub ComboBox3_Click()
Erase Tab3: ComboBox4.Clear
Dim Ws As Worksheet, cpt As Integer
For Each Ws In ThisWorkbook.Worksheets(Tab2)
With Ws
If CStr(.Range("J1")) = ComboBox3 Then
ReDim Preserve Tab3(cpt)
Tab3(cpt) = .Name
cpt = cpt + 1
Me.ComboBox4.Value = .Range("J2")
If Me.ComboBox4.ListIndex = -1 Then Me.ComboBox4.AddItem .Range("J2")
End If
End With
Next
End Sub
Private Sub ComboBox4_Click()
Erase Tab4
Dim Ws As Worksheet, cpt As Integer
For Each Ws In ThisWorkbook.Worksheets(Tab3)
With Ws
If CStr(.Range("J2")) = ComboBox4 Then
ReDim Preserve Tab4(cpt)
Tab4(cpt) = .Name
cpt = cpt + 1
End If
End With
Next
'ICI, la variable Tab4 contient les noms des feuilles ou on trouve les 4 valeurs
For cpt = LBound(Tab4) To UBound(Tab4)
MsgBox Tab4(cpt)
Next cpt
End Sub
Je ne serais pas de retour ici avant mercredi!
Bon week end
metek18
Messages postés
10
Date d'inscription
jeudi 9 juillet 2015
Statut
Membre
Dernière intervention
26 avril 2016
23 juil. 2015 à 14:15
23 juil. 2015 à 14:15
Bonjour et désolé pour la réponse tardive. J'ai adapaté ce code à mon projet à ça fonctionne nickel merci !