Graphique croisé dynamique

Stikmou -  
rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Est-ce que c'est possible d'avoir un tableau et un graphique qui change de filtre en automatique, par exemple celui-ci filtrerait les 6 derniers mois et au lieu de changer manuellement quand un nouveau mois commence, le faire automatiquement ?

Si oui doit-on forcément faire un croisé dynamique ?

Quelle est la réelle utilité d'un croisé dynamique (avantages), j'ai pas tout compris ?

Merci d'avance.

2 réponses

  1. rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
     
    Bonjour,

    Oui c'est totalement possible et le graphique croisé dynamique est une très bonne solution.
    Les graphiques croisés dynamiques sont...dynamiques. Il suffit dans changer un champ par exemple afin d'avoir plus de données à visualiser. Regarde sur internet il y a plein de bons tuto pour apprendre à les comprendre et à en faire.

    Après pour ce qui est de l'automatisation, il faut passer par macro et là ca se complique. Je peux vous donner des exmples de codes que j'ai créé afin de faire changer automatiquement les pivots du graphiques selon un nombre de caractéristiques dynamiques. Vous pouvze biensur l'adapter simplement si vous vous y connaissez un peu en vba.

    Mais je n'aurai pas le temps de vous expliquer ceci en détail.

    Bonne journée
    0
    1. Stikmou
       
      Bonjour,

      Je veux bien les exemples de codes que vous me proposez, oui je m'y connais un peu en vba, il n'y aura donc pas de problèmes pour la compréhension.

      Merci de votre réponse,

      En attente de la prochaine
      0
    2. rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
       
      Bonjour,

      alors voici la macro que j'ai créée. J'ai comme pivot principal : NOM_CARACTERISTIQUE_CONTROLE et comme second pivot : CD_MACHINE. Les noms des pivots sont entrés dans un tableaux (array) nommé TableCaractControled(w). Après je fais varier les pivots de CD_MACHINE pour chaque pivots de TableCaractControled(w) en ayant des tests sur le nom du pivot CD_MACHINE.

      Lorsque je prends le noms des pivots pour les inclure dans les tableaux, c'est fait par macro et ** délimite les 3 types : manuel auto et WA donc a modifier et a adapter ;-)
      voila :
      ______

      Sub GCD_Choice_Copy_Paste()

      Set CurrentOngletSheet = ActiveSheet
      Dim n As Integer
      Dim p As Integer
      Dim monPivIt As Object

      nbCellTOT = nbCellManu + nbCellAuto + nbCellWA
      typeCarac = 1 '1 pour Manu, 2 pour Auto, 3 pour WA
      flag = 0
      ww = 0
      For w = 0 To nbCellTOT - 1 'Attention changer ici nbCell
      'MsgBox (TableCaractControled(w))
      If Not TableCaractControled(w) = "**" Then
      'Filtre de la mesure
      CurrentOngletSheet.PivotTables(1).PivotFields("NOM_CARACTERISTIQUE_CONTROLE").ClearAllFilters
      CurrentOngletSheet.PivotTables(1).PivotFields("NOM_CARACTERISTIQUE_CONTROLE").CurrentPage = TableCaractControled(w)
      'Filtre de la machine pour le type de caractéristiques
      'ActiveSheet.PivotTables(1).PivotFields("CD_MACHINE").CurrentPage = "(All)"

      Select Case typeCarac
      Case 1 'Manuel : commence par 3 digit !exclusivement!
      If flag = 0 Then
      With ActiveSheet.PivotTables(1).PivotFields("CD_MACHINE")
      For Each monPivIt In .PivotItems
      On Error Resume Next
      monPivIt.Visible = True
      Next
      For Each monPivIt In .PivotItems
      If IsNumeric(Left(monPivIt.Name, 3)) And Not IsNumeric(Mid(monPivIt.Name, 4, 1)) Then
      monPivIt.Visible = True
      'MsgBox (typeCarac & " " & monPivIt.Name & " visible")
      Else
      On Error Resume Next
      monPivIt.Visible = False
      If Err.Number <> 0 Then
      MsgBox ("Erreur de pivot CD_MACHINE :" & monPivIt.Name & Chr(10) _
      & "Caractéristique : " & TableCaractControled(w))
      End If
      'MsgBox (typeCarac & " " & monPivIt.Name & " invisible")
      End If
      Next
      End With
      flag = 1
      End If

      Case 2 'Auto : commence par 4 digit !exclusivement!
      If flag = 0 Then
      With ActiveSheet.PivotTables(1).PivotFields("CD_MACHINE")
      For Each monPivIt In .PivotItems
      On Error Resume Next
      monPivIt.Visible = True
      Next
      For Each monPivIt In .PivotItems
      If IsNumeric(Left(monPivIt.Name, 4)) And IsNumeric(Mid(monPivIt.Name, 4, 1)) Then
      monPivIt.Visible = True
      'MsgBox (typeCarac & " " & monPivIt.Name & " visible")
      Else
      On Error Resume Next
      monPivIt.Visible = False
      If Err.Number <> 0 Then
      MsgBox ("Erreur de pivot CD_MACHINE :" & monPivIt.Name & Chr(10) _
      & "Caractéristique : " & TableCaractControled(w))
      End If
      End If
      Next
      End With
      flag = 1
      End If

      Case 3 'WA : commence par "Contrôle" !exclusivement!
      If flag = 0 Then
      With ActiveSheet.PivotTables(1).PivotFields("CD_MACHINE")
      For Each monPivIt In .PivotItems
      On Error Resume Next
      monPivIt.Visible = True
      Next
      For Each monPivIt In .PivotItems
      If monPivIt.Name Like "*Contrôle*" Then
      monPivIt.Visible = True
      'MsgBox (typeCarac & " " & monPivIt.Name & " visible")
      Else
      On Error Resume Next
      monPivIt.Visible = False
      If Err.Number <> 0 Then
      MsgBox ("Erreur de pivot CD_MACHINE :" & monPivIt.Name & Chr(10) _
      & "Caractéristique : " & TableCaractControled(w))
      End If
      End If
      Next
      End With
      flag = 1
      End If
      End Select

      CurrentOngletSheet.ChartObjects(1).CopyPicture
      GraphSheet.Activate
      'calcul du futur emplacement des graphiques
      Call CalculCells

      GraphSheet.Paste
      'MsgBox (w & " " & ww)
      CurrentOngletSheet.Activate
      'variable du nombre de graphique w - les **
      ww = ww + 1
      ElseIf TableCaractControled(w) = "**" Then
      typeCarac = typeCarac + 1
      flag = 0
      ww = 0
      End If
      Next w

      End Sub

      Demandez si vous avez des questions.
      0