Graphique croisé dynamique

Fermé
Stikmou - 25 août 2014 à 15:53
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - 26 août 2014 à 15:52
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

Un peu d'aide svp
0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
26 août 2014 à 15:10
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
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
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
26 août 2014 à 15:52
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