Partager via

Probleme Code VBA

Redouan AZEWAOU 0 Points de réputation
2025-08-05T11:37:11.5033333+00:00

J'ai plusieurs TCD qui sont liée à un segment à part un seul qui n'est pas liée vu qu'ils n'ont pas la même source, j'ai essayé de mettre un code VBA (pas trop fort en VBA) : qui dit si un filtre change sur l'un des TCD change, tu met le même filtre sur le TCD qui n'est pas liée mais ca marche pas je sais pas pourquoi :/ (c'est le même champs sur tout les TCD) avez vous un code VBA qui pourra marcher s'il vous plait ?

Merci

Microsoft 365 et Office | Excel | Pour le business | Autres

3 réponses

  1. Redouan AZEWAOU 0 Points de réputation
    2025-09-15T12:14:51.0766667+00:00

    enfaite, j'ai toujours un problème au niveau de ce sujet :
    J'ai plusieurs TCD qui sont liée à un segment à part un seul qui n'est pas liée vu qu'ils n'ont pas la même source, j'ai essayé de mettre un code VBA (pas trop fort en VBA) : qui dit si un filtre change sur l'un des TCD change, tu met le même filtre sur le TCD qui n'est pas liée mais ca marche pas je sais pas pourquoi :/ (c'est le même champs sur tout les TCD) avez vous un code VBA qui pourra marcher s'il vous plait ? le code que vous m'avez donné marche pas :/

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire

  2. Anonyme
    2025-08-06T15:46:33.44+00:00

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Salut @Redouan AZEWAOU,

    Merci pour votre réponse rapide. Je suis heureux que le code initial ait fonctionné pour vous. Pour rendre la synchronisation bidirectionnelle (afin que les modifications dans l’un ou l’autre des tableaux croisés dynamiques mettent à jour l’autre), vous pouvez légèrement modifier l’approche.

    Placez ce code dans le module de la feuille de calcul où se trouvent les deux tableaux croisés dynamiques :

    Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

        Dim pt1 As PivotTable

        Dim pt2 As PivotTable

        Dim filterField As String

        Dim filterValue As String

        ' Set your PivotTable names and the field to sync

        Set pt1 = Me.PivotTables("PivotTable1")

        Set pt2 = Me.PivotTables("PivotTable2")

        filterField = "YourFieldName" ' Replace with your actual field name

        On Error Resume Next

        If Target.Name = pt1.Name Then

            filterValue = pt1.PivotFields(filterField).CurrentPage

            pt2.PivotFields(filterField).ClearAllFilters

            pt2.PivotFields(filterField).CurrentPage = filterValue

        ElseIf Target.Name = pt2.Name Then

            filterValue = pt2.PivotFields(filterField).CurrentPage

            pt1.PivotFields(filterField).ClearAllFilters

            pt1.PivotFields(filterField).CurrentPage = filterValue

        End If

        On Error GoTo 0

    End Sub

    Ce code surveille les mises à jour de l’un ou l’autre des tableaux croisés dynamiques. Lorsqu’un filtre est modifié dans l’un, il applique automatiquement le même filtre à l’autre, garantissant ainsi que les deux restent synchronisés.

    Faites-moi savoir si cela fonctionne pour vous. Je suis heureux de vous aider davantage.


    Si la réponse est utile, veuillez cliquer sur « Accepter la réponse » et l’évaluer positivement. Si vous avez des questions supplémentaires concernant cette réponse, veuillez cliquer sur « Commentaire ». 

    Accepter la réponsequoi1 réponse

    Remarque : Veuillez suivre les étapes de notre documentation pour activer les notifications par e-mail si vous souhaitez recevoir la notification par e-mail liée à ce fil de discussion.

    Cette réponse a-t-elle été utile ?


  3. Anonyme
    2025-08-05T16:28:48.4633333+00:00

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Salut @Redouan AZEWAOU,

    Merci d’avoir publié votre question sur la communauté Microsoft Q&A. Je suis heureux de pouvoir vous aider avec votre problème.

    Étant donné que l’un de vos tableaux croisés dynamiques n’est pas connecté au segment en raison d’une source de données différente, vous devrez mettre à jour manuellement son filtre lorsqu’un autre tableau croisé dynamique change.

    Voici une solution VBA qui écoute les modifications d’un tableau croisé dynamique spécifique et applique le même filtre à celui qui n’est pas lié :

    Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

        Dim sourcePT As PivotTable

        Dim targetPT As PivotTable

        Dim filterField As String

        Dim filterValue As String

        ' Set your PivotTable names and the field to sync

        Set sourcePT = Me.PivotTables("PivotTable1") ' The one linked to the slicer

        Set targetPT = Me.PivotTables("PivotTable2") ' The one not linked

        filterField = "YourFieldName" ' Replace with your actual field name

        ' Only proceed if the updated PivotTable is the source

        If Target.Name = sourcePT.Name Then

            On Error Resume Next

            filterValue = sourcePT.PivotFields(filterField).CurrentPage

            targetPT.PivotFields(filterField).ClearAllFilters

            targetPT.PivotFields(filterField).CurrentPage = filterValue

            On Error GoTo 0

        End If

    End Sub

    1. Placez ce code dans le module de la feuille de calcul où se trouvent vos tableaux croisés dynamiques.
    2. Remplacez "PivotTable1" et "PivotTable2" par les noms réels de vos tableaux croisés dynamiques.
    3. Remplacez "YourFieldName" par le nom du champ que vous souhaitez synchroniser.

    J’espère que ces informations vous seront utiles. N’hésitez pas à me recontacter pour toute assistance supplémentaire.


    Si la réponse est utile, veuillez cliquer sur « Accepter la réponse » et l’évaluer positivement. Si vous avez des questions supplémentaires concernant cette réponse, veuillez cliquer sur « Commentaire ». 

    Remarque : Veuillez suivre les étapes de notre documentation pour activer les notifications par e-mail si vous souhaitez recevoir la notification par e-mail liée à ce fil de discussion.

    Cette réponse a-t-elle été utile ?


Votre réponse

Les réponses peuvent être marquées comme « Acceptées » par l’auteur de la question et « Recommandées » par les modérateurs, ce qui aide les utilisateurs à savoir que la réponse a résolu le problème de l’auteur.