Bonsoir à tous, j'ai dans un tableau les données de plusieurs entreprises. J'extrait les données de trois champs dans un graphique croisé dynamique.
Je souhaiterais faire une feuille par société juste en récupérant le nom de cette feuille puis aller chercher en automatique les champs correspondant. Je joint un extrait du fichier comme exemple.
Ça c'est fait par la macro Private Sub CBn_Ajouter_Click() du formulaire.
Dans cette partie : With sh.PivotTables("Etat Mensuel")
'Rajouter les champs des valeur du TCD
.AddDataField .PivotFields(Nom & " Nb OT"), "Nb OT", xlSum
.AddDataField .PivotFields(Nom & " Nb OT terminé"), "Nb OT terminé", xlSum
.AddDataField .PivotFields(Nom & " OT restant"), "OT restant", xlSum
Nom contenant le nom de l'entreprise.
AddDataField ajoute le champ de données avec le nom personnalisé et la fonction utilisée.
Je croyais que tu étais familié des TCD et des Graphique de TCD en voyant ton 1er exemple mais ... Lorsque les données de ton tableau source changent, il faut actualiser tes TCD.
Tu peux ajouter des colonnes dans ton tableau "_tb_Entretien" de la feuille Archives, mais pas n'importe quoi.
Dans ton exemple la colonne "Date de l'entretien" contient maintenant un pourcentage et la Date de l'entretien est contenue dans la colonne "Colonne1" les TCD ne s'y retrouvent plus .
Voilà un gif qui explique comment ajouter/supprimer une colonne d'un tableau structuré : Voir PJ
Ensuite, il faut actualiser les TCD : clic droit sur une cellule du TCD et Actualiser :
Ensuite tu peux, en fonction de ce que représente cette colonne, la placer comme un filtre, colonne, ligne ou valeur dans ton TDC. : Voir PJ
Sur le Modèle TdB, la zone Valeurs du TCD est vide, la macro rajoute en fonction de l'entreprise choisie les 3 colonnes qui la concernent. :
Exemple pour Hydrolec
En ayant personnalisé le nom (Nb OT pour somme de Hydrolec Nb OT)
Pour les couleurs des 1er graphes ("Graph Mensuel"), le modèle ne comportant pas de champ "Valeurs" on ne peut pas prédéfinir ces couleurs, j'ai ajouté un bout de code dans la procédure Private Sub CBn_Ajouter_Click() du formulaire :
Enrichi (BBcode):
...
Set chrt = sh.ChartObjects("Grph_Mensuel").Chart
'Couleur des histogrammes du graphique "Grph_Mensuel"
With chrt
With .FullSeriesCollection(1).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(79, 129, 189) 'Bleu
.Transparency = 0
.Solid
End With
With .FullSeriesCollection(2).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(155, 187, 89) 'Vert
.Transparency = 0
.Solid
End With
With .FullSeriesCollection(3).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(192, 80, 77) 'Rouge
.Transparency = 0
.Solid
End With
End With
...
Tu peux choisir les composantes RGB que tu veux. Pour les connaître, une astuce :
Colorie un cellule avec la couleur que tu veux, pour le remplissage, choisis autres couleurs et personnalisées, choisis ta couleur et relève les composantes rouge, vert, bleu. Place la dans la fonction RGB du code.
Voilà pour un premier point.
Un conseil, crée toi un nouveau TCD sur une feuille vierge, Sélectionne une cellule de ton tableau de la feuille Archives, Insertion, Tableau Croisé Dynamique, Nouvelle feuille de calcul et lance toi !
Quand tu auras créé ton tableau, ajoute un segment (Analyse du tableau croisé dynamique, insérer un segment ... Puis insère un graphique etc...
Bonsoir Alain, alors pour les TCD je l'ai manipule mais pas comme toi c'est une évidence, il m'en reste encore beaucoup a apprendre. Mais oui fait un tableau et en extraire des graphiques et mettre en place des segments je sais faire. Merci pour tes explications.
Et les TCD plus a leurs place normal j'ai fais des testes pour essayer de comprendre comment tu avais repris les données des sociétés pour les isoler dans leurs propre feuille. c'est cette manipulation la que je ne comprend pas.
J'ai le fichier sans boulettes a la maison je vais comparer tes macros et faire les changement manuellement.
Ça c'est fait par la macro Private Sub CBn_Ajouter_Click() du formulaire.
Dans cette partie : With sh.PivotTables("Etat Mensuel")
'Rajouter les champs des valeur du TCD
.AddDataField .PivotFields(Nom & " Nb OT"), "Nb OT", xlSum
.AddDataField .PivotFields(Nom & " Nb OT terminé"), "Nb OT terminé", xlSum
.AddDataField .PivotFields(Nom & " OT restant"), "OT restant", xlSum
Nom contenant le nom de l'entreprise.
AddDataField ajoute le champ de données avec le nom personnalisé et la fonction utilisée.
Bonsoir Alain, merci pour l'explication.
Une petite question si je rajoute dans l'archive la possibilité de saisir plus de société en ajoutant des champs dans la continuité. Normalement si j'ai bien compris il seront bien pris en compte dans tes macro. Car je viens de saisir les derniers chiffre et je suis limite pour le nombre de société.
Bonsoir @christ77000
bonsoir tout le monde,
Dans la feuille "Tables", la formule qui recherche les entreprises cherche dans les titres du tableau tous les titres de plus de 6 caractères qui se terminent par " Nb OT" (avec un espace en tête).
Cette formule est dynamique, donc si tu respectes ce formalisme, la combo du formulaire te proposera toutes les entreprises (sauf celles pour lesquelles la feuille existe déjà).
Bonjour @christ77000
Merci pour le retour,
Remarque : ce n'est pas ton post que tu dois marquer comme solution, mais un de ceux qui t'apportent la solution ...