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

[Résolu/Fermé]
Signaler
Messages postés
1
Date d'inscription
mardi 10 novembre 2015
Statut
Membre
Dernière intervention
10 novembre 2015
-
Messages postés
1
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
27 novembre 2015
-
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,

1 réponse

Messages postés
2222
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
18 septembre 2021
327
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
Messages postés
1
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
27 novembre 2015

Bonjour Frenchie83,

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