Excel 2013 - Macro - Filtre d'une liste apres clic cell

Résolu/Fermé
Gate31 Messages postés 1 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 10 novembre 2015 - 10 nov. 2015 à 12:33
Gate14 Messages postés 1 Date d'inscription lundi 3 novembre 2008 Statut Membre Dernière intervention 27 novembre 2015 - 27 nov. 2015 à 14:12
Bonjour à tous,
Je sollicite votre aide pour résoudre un problème sur Excel 2013.
Je cherche à tenir un fichier de comptes. Pour se faire, j'ai 2 onglets :
1/ 2016 : feuille récapitulatif des comptes de l'année

2/ Détail 2016 : feuille listant le détail des opérations


L'idée est la suivante:
Lorsque je double clic sur la cellule C5 de ma feuille 2016, je souhaite que cela m'affiche la feuille Détail 2016 filtrée avec:
Colonne 1 (Catégorie) filtrée suivant la valeur de 2016/A5
Colonne 2 (Mois) filtrée suivant la valeur de 2016/C1

J'ai déjà réalisé un bout de code qui fonctionne mais qui n'est pas complet:

Dans ma page 2016, j'ai:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C5]) Is Nothing Then
Call ExtraireDonnées
End If
End Sub

Et dans un module, j'ai:
Sub ExtraireDonnées()
Sheets("Détail 2016").Select
Range([A2], [H1000].End(xlUp).Offset(3, 0)).AutoFilter Field:=1, Criteria1:=Range("2016!A5")
Range([A2], [H1000].End(xlUp).Offset(3, 0)).AutoFilter Field:=2, Criteria1:="Jan-16"
End Sub

Mes problèmes, et vous avez du en voir de suite en lisant mon code sont:
1/ Dans mon module, j'ai du rentrer en "dur" la date car il semble qu'il y ait un problème de format si j'écris Criteria1:=("2016!C1")...
2/ Le code fonctionne, c'est à dire, lorsque je double clic sur ma cell C5, j'ai bien ma page Détail 2016 qui s'affiche est qui est filtrée sur les colonnes 1 et 2 comme attendu.
Le problème c'est comment étendre ce code pour toutes mes cellules de ma feuille 2016? (du moins toutes les cellules de la colonne "Réel" de chaque mois...?

D'avance merci pour votre aide,
A voir également:

1 réponse

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
23 nov. 2015 à 04:30
Bonjour
Dans le module de la feuille
Option Compare Text
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Row < 3 Then Exit Sub
    If Cells(2, Target.Column) = "Réel" Then
        Catégorie = Cells(Target.Row, 1)
        Mois = Format(Cells(1, Target.Column - 1), "m/d/yyyy")
        Call ExtraireDonnées
    End If
End Sub


Dans un module classique
Option Compare Text
Public Catégorie
Public Mois
Sub ExtraireDonnées()
    Sheets("Détail 2016").Select
    Range([A2], [H1000].End(xlUp).Offset(3, 0)).AutoFilter Field:=1, Criteria1:=Catégorie
    Range([A2], [H1000].End(xlUp).Offset(3, 0)).AutoFilter Field:=2, Operator:=xlFilterValues, Criteria2:=Array(1, Mois)
End Sub


Il semblerait que les mois en ligne 1 de la feuille "2015" , soient dans des cellules fusionnées, si ce n'était pas le cas veuillez remplacer la ligne suivante du module de la feuille
 Mois = Format(Cells(1, Target.Column - 1), "m/d/yyyy")

par
  Mois = Format(Cells(1, Target.Column), "m/d/yyyy")

Cdlt
0
Gate14 Messages postés 1 Date d'inscription lundi 3 novembre 2008 Statut Membre Dernière intervention 27 novembre 2015
27 nov. 2015 à 14:12
Bonjour Frenchie83,

Un grand merci pour votre aide, cela fonctionne parfaitement !
Bonne continuation,
0