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

Résolu
Gate31 Messages postés 1 Statut Membre -  
Gate14 Messages postés 1 Statut Membre -
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

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. Gate14 Messages postés 1 Statut Membre
       
      Bonjour Frenchie83,

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