VBA - Mise à jour des charts avec liste déroulante -TDB

Bonjour,
je suis nouveau ici et je vous serais très reconnaissant si quelqu’un pouvait m’aider avec une macro que je dois développer pour mon projet. Mon objectif est de synchroniser tous les graphiques avec une liste déroulante, à la manière d’un « segment ». certains données pour ces graphiques proviennent d’un fichier externe, donc je souhaite que chaque fois qu’une valeur est sélectionnée dans les listes déroulantes, les graphiques correspondants se mettent à jour automatiquement.

De plus, je voudrais, si possible, que lorsqu’un CP (Chef projet) est sélectionné, seuls les projets correspondants à ce CP soient affichés dans une autre liste déroulante. Cela permettrait une interaction plus dynamique entre les éléments de l’interface utilisateur selon les sélections faites.

J’ai créé la macro suivante, mais elle ne fonctionne pas tout à fait correctement. À titre d’information, certains tableaux croisés sont créés comme « modèles de données » et d’autres comme modèles traditionnels. En effet, pour ceux créés comme modèles traditionnels, la macro fonctionne bien, mais elle ne marche pas pour les autres tableaux

Sub UpdateChartsAndPivotTables()
Dim wsData As Worksheet
Dim wsCharts As Worksheet
Dim pt As PivotTable
Dim cht As ChartObject
Dim selectedCP As String
Dim selectedProject As String
Dim wsActive As Worksheet

' Définir la feuille active
Set wsActive = ThisWorkbook.Sheets("Tbd") ' Remplacez par le nom exact de la feuille contenant les ComboBox

' Récupérer la feuille de données et la feuille de tableaux croisés dynamiques
Set wsData = ThisWorkbook.Sheets("Data_Donées")
Set wsCharts = ThisWorkbook.Sheets("Charts_méteo_Ch")

' Récupérer les valeurs sélectionnées dans les ComboBox
selectedCP = wsActive.OLEObjects("Liste_CP").Object.Value
selectedProject = wsActive.OLEObjects("Liste_Projets").Object.Value

' Filtrer les tableaux croisés dynamiques dans la feuille "Charts_méteo_Ch"
Dim pivotNames As Variant
pivotNames = Array("Tableau croisé dynamique27", "Tableau croisé dynamique28", "Tableau croisé dynamique29", _
                   "Tableau croisé dynamique23", "Tableau croisé dynamique24", "Tableau croisé dynamique31", _
                   "Tableau croisé dynamique1", "Tableau croisé dynamique3")

Dim pivotName As Variant
For Each pivotName In pivotNames
    On Error Resume Next
    Set pt = wsCharts.PivotTables(pivotName)
    On Error GoTo 0
    If Not pt Is Nothing Then
        ' Vérifier si le champ "RESP PLANNING" existe dans le tableau croisé dynamique
        On Error Resume Next
        If pt.PivotFields("RESP PLANNING").Name <> "" Then
            With pt.PivotFields("RESP PLANNING")
                .ClearAllFilters
                .CurrentPage = selectedCP
            End With
        Else
            MsgBox "Le champ 'RESP PLANNING' n'existe pas dans " & pivotName
        End If
        On Error GoTo 0

        ' Vérifier si le champ "Nom Projet" existe dans le tableau croisé dynamique
        On Error Resume Next
        If pt.PivotFields("Nom Projet").Name <> "" Then
            With pt.PivotFields("Nom Projet")
                .ClearAllFilters
                .CurrentPage = selectedProject
            End With
        Else
            MsgBox "Le champ 'Nom Projet' n'existe pas dans " & pivotName
        End If
        On Error GoTo 0
    End If
Next pivotName

' Actualiser les graphiques dans la feuille "Charts_méteo_Ch"
For Each cht In wsCharts.ChartObjects
    cht.Chart.Refresh
Next cht

End Sub

Je vous remercie d’avance.

Cordialement,
Emy
Test_Charts.xlsm (225,5 Ko)

le fichier et la macro sont du même projet ??? Les feuilles ne correspondent pas tc

En fait, le fichier est une DEMO conçue pour faciliter la configuration de la macro que je souhaite réaliser. La macro que j’ai mentionnée dans le corps de l’e-mail provient de mon projet principal. Cependant, le fichier est volumineux, c’est pourquoi je ne peux pas l’ajouter directement.

Je vous remercie pour l’aide que vous pouvez apporter.
Bien cordialement,
Emy

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.