Rafraîchir TCD avec macro VBA (click sur une cellule)
Bonjour à tous,
kinders59, les macro sont à copier sur la page code de la feuille "DashBoard"
Private Sub Worksheet_Change(ByVal Target As Range) 's'il y a un changement sur la feuille "DashBoard" dans la cellule "$B$7$" ou "$B$8$" mettre le tcd15 à jour If Target.Address = "$B$7$" Or Target.Address = "$B$8$" Then RefreshTCD15 End Sub Sub RefreshTCD15() arrMois = Array("", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") With Sheets("Cross Tabulation") On Error Resume Next .PivotTables("Tableau croisé dynamique15").PivotFields("Years").ClearAllFilters 'pour chaque item du champ "Years" du tcd15 For Each Pi In .PivotTables("Tableau croisé dynamique15").PivotFields("Years").PivotItems choixAnnée = CStr(Sheets("DashBoard").Range("B7")) ' 'trouve le mois sélectionner dans les donnée de arrMois et retourne un chiffre entre 1 et 12 choixMois = Application.Match(Sheets("DashBoard").Range("B8"), arrMois, 0) If Pi = choixAnnée Or Month(Pi) = choixMois Then Pi.Visible = True Else Pi.Visible = False End If Next End With End Sub
Bonjour sabV merci de ta réponse
Mon excel étant passé en Anglais (comme tout mon pc sans ma volonté), faut-il que je modifie la formule pour la passer en Anglais ? car de ce que je vois actuellement je n'arrive pas à la faire fonctionner malgré aucun message d'erreur
Ayant déjà une maccro qui me permet lorsque je change de "country" ou "customer" de faire un refresh totale de tous les TCD je ne me suis pas compliqué la tâche finalement en reprenant une partie de ton code (le début) je me suis mit à faire une petite recherche sur le net car je n'arrivais pas à faire fonctionner la tienne, j'ai donc trouvé une formule VBA simple et efficace qui est la suivante :
"Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub"
Mymacro correspond à une macro que j'ai déjà de connue et qui fonctionne sur mon dashboard, elle résout mon problème et ne casse rien donc perfect for me
Encore merci à tous pour vos réponses et votre aide !!
Je vous souhaite une agréable journée et bon courage !