Excel : Données d'un Tableau croisé dynamique

Fermé
Hérisson - 4 déc. 2007 à 12:37
 hn - 29 nov. 2014 à 20:50
Bonjour, Bonjour,

Si quelqu'un peut m'aider sur ce point, je lui en serais vraiment, VRAIMENT, reconnaissante !!! si si !!!

Donc, j'ai un tableau de données du genre :
Priorité Titre incident
Mineure AAAAA
Mineure BBBBBB
Grave CCCCC

Si je fais un tableau croisé dynamique, il va m'afficher les incidents pour les priorités "Mineure" et "Grave".
Or je sais qu'il peux y avoir 3 types de priorité : Critique, Grave et Mineure.
Sauf que si dans mes données, je n'ai pas d'incident "Critique", il ne m'affichera pas de colonne "Critique" dans le tableau croisé dynamique.
Et je voudrais qu'il affiche, dans le tableau croisé dynamique, systématiquement les 3 priorités, même si certaines n'ont pas de valeur ...

Comment faire ? (solution macro ou VBA) ...

Merci d'avance pour votre aide et bonne journée.

Aurore.
A voir également:

9 réponses

Pour continuer à afficher les colonnes même quand il n'y a plus d'éléments dedans il y a un truc assez sympa c'est de se rendre dans les paramètres de champs (clic droit sur colonne ou ligne) et de cocher "afficher les éléments sans données"

j'ai eu le même problèmes car j'avais des cellules qui faisaient référence à des cellules à l'intérieur d'un tableau croisé dynamique et quand une colonne disparaissait cela foutait totalement en l'air les statistiques

maintenant le problème est résolu. Il me suffit si des données n'existent pas encore dans une colonne (exemple, pas d'entretien après un an passé l'entretien de planification) de les créer artificiellement en modifiant une date, je mets à jour le TCD puis je remets la bonne date et la colonne reste quand même même s'il n'y a plus de données dedans.
4
merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
4 déc. 2007 à 18:11
bonjour

As-tu essayé d'en mettre une vide, cela devrait fonctionner...
0
Bonjour,

Merci de m'aider ...
Alors coilà vraiment le contexte :
- j'extrais des données d'un outil où sont listés des incidents
- je récupère ces données en format excel
- à partir de là, j'ai écris un code en VBA qui me fais quelques calculs intermédiares, notamment une colonne avec des numéros d'incidents et une autre colonne avec leur priorité (soit critique, soit grave, soit mineure)
Je fais tout ça tous les jours et évidemment, je n'ai pas tous les jours des incidents critiques, graves et mineures.
Comme j'ai automatisé tout ça (jusque la création d'un tableau croisé dynamique "incident/priorité"), je voulais savoir s'il n'ya pas une option programmable en vba qui pourrait me mettre toujours 3 colonnes dans mon tableau (critique - grave - mineure) et en data, le nb d'incidents correspondants.

J'ai trouvé un bout de code mais je ne sais pas comment l'utilisé :
ActiveSheet.PivotTables(NomTab).AddFields RowFields:= _
"Affaire", ColumnFields:=Array("Catégorie", "Nom" )
ActiveSheet.PivotTables(NomTab).PivotFields( _
"Nb d'heures (heures décimale)" ).Orientation = xlDataField

Est-ce que "ColumnFields:=Array("Catégorie", "Nom" )" ne pourrait pas être la solution ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
4 déc. 2007 à 21:28
bonjour

étant donné que tu modifies l'entrée des données, il me paraît plus simple de créer trois lignes vides au départ que d'essayer de faire croire au TCD qu'elles sont là.
Si tu fais rafraîchir, comment réagira le TCD hors macro ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Eh bien je ne sais pas du tout comment faire ...
Je ne vois pas trop ce que tu veux dire par : "créer 3 lignes vides" ?
Bien sûr, je peux faire un tableau tout simple mais ce que j'aimerais garder, c'est la fonctionnalité d'un tableau croisé dynamique : on double clique à l'intérieur du tableau et on a le détail ....

Je ne vois pas trop ce que tu veux que je teste ....
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
4 déc. 2007 à 22:23
bonjour

- je récupère ces données en format excel
- à partir de là, j'ai écris un code en VBA qui me fais quelques calculs intermédiares, notamment une colonne avec

- je rajoutes 3 lignes ( une pour chaque code ) dans ma feuille avec des données nulles pour ne pas changer la valeur du TCD.
Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1) = "Critique"
Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1) = "Grave"
Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1) = "Mineure"

C'est ce qui me paraît le plus simple...
0
bon j'espère que je ne vais pas te décourager de m'aider, parce que c'est vraiment important pour moi !!!!
Je ne sais pas où ajouter "Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 1) = "Critique"" ... ;o(
Comme je ne sais pas joindre un fichier sur ce forum, je vais essayer de te le faire en texte ...
Voilà mon tableau :
Num Priorité Nature
nbi1 Mineure Inc
nbi2 Grave Dem
nbi3 Mineure Inc
nbi4 Mineure Inc
nbi5 Grave Dem

Voilà ce que me donne le TCD :
NB Num Priorité
Nature Grave Mineure Total
Dem 2 2
Inc 3 3
Total 2 3 5

Et voilà ce que j'aimerais :
NB Num Priorité
Nature Critique Grave Mineure Total
Dem 0 2 2
Inc 0 3 3
Total 0 2 3 5

Voilà le code généré pour créer le TCD :
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 04/12/2007 par FabRoro
'

'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R1C1:R6C3").CreatePivotTable TableDestination:=Range("A10"), _
TableName:="Tableau croisé dynamique1"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Nature")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Priorité")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Num")
.Orientation = xlDataField
.Position = 1
End With
Range("A17").Select
End Sub


Que dois-je rajouter comme code et où stp ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
4 déc. 2007 à 23:15
bonjour

' Macro enregistrée le 04/12/2007 par FabRoro
'



'

Sheets("Feuil1").Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 2) = "Critique"
Sheets("Feuil1").Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 2) = "Grave"
Sheets("Feuil1").Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 2) = "Mineure"

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R1C1:R9C3").CreatePivotTable TableDestination:=Range("A10"), _ 


En faisant ainsi tu devrais avoir tes trois lignes. (R9 au lieu de R6)
0
loic fruleux
18 déc. 2013 à 10:19
Macro enregistrée le 04/12/2007 par FabRoro
'



'

Sheets("Feuil1").Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 2) = "Critique"
Sheets("Feuil1").Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 2) = "Grave"
Sheets("Feuil1").Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1, 2) = "Mineure"

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R1C1:R9C3").CreatePivotTable TablesDestination:=Range("A10"), _
0
3 cat de titres avec 15 agendes de placement
0