Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

TCD inverse

11 réponses
Avatar
Droopy191
Bonjour,

J'aurais besoin de faire une sorte de TCD inverse.
Je pars d'un tableau de données brutes en ligne de la facon suivante
client - référence - mois - quantité

Je fais un TCD pour obtenir une synthèse
en ligne: client référence
en colonne les mois
les données sont les quantités

Visuellement ca donne ca
| janvier 2012 | février 2012 | ....
--------------------------------------------------------------------------
référence 1 | client 1 | q1 | q2
| client 2 | q3 | q4
référence 2 | client 1 | q5 | q6
| client 3 | q7 | q8
...


Ce rendu permet une bonne visualisation des mois à venir. Les quantités
sont ajustées en fonction des tendances ( copier / coller du tcd et
ajustement manuel des valeurs quantités).
Une fois ces ajustements de prévisions réalisées, je voudrais
retransformer ces données en lignes pour pouvoir les réintégrer dans la
GPAO.
client - référence - mois - quantité


J'ai trouvé une macro qui me permet de tranformer mon format TCD en
ligne, si il y une seule colonne de base ( par exemple, le client ou la
référence ) mais pas 2 colonnes tel que présenté plus haut client +
référence.


------------------------------------
Sub TCD_Inverse()
Dim SummaryTableRange As Range
Dim PivotTableSheet As Worksheet

Set SummaryTableRange = ActiveCell.CurrentRegion

If SummaryTableRange.Count = 1 Or SummaryTableRange.Rows.Count < 3 Then
MsgBox "Select a cell in the summary table.", vbCritical
Exit Sub
End If

ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlConsolidation, _
SourceData:=Array(SummaryTableRange.Address(True, True, xlR1C1,
True))) _
.CreatePivotTable TableDestination:="", _
TableName:="PivotTable1"
Set PivotTableSheet = ActiveSheet

With PivotTableSheet
.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
.PivotTables("PivotTable1").DataPivotField.PivotItems("Nombre
de Valeur").Position = 1
.PivotTables("PivotTable1").PivotFields("Ligne").Orientation =
xlHidden
' .PivotTables("PivotTable1").PivotFields("Ligne").Caption = "Toto"

.PivotTables("PivotTable1").PivotFields("Colonne").Orientation
= xlHidden
End With

Range("B4").ShowDetail = True
Application.DisplayAlerts = False
PivotTableSheet.Delete
Application.DisplayAlerts = True

End Sub

------------------------------------


En concaténant, client+référence dans une seule colonne au lieu de 2
colonnes avant le TCD_Inverse() ca marchera mais auriez vous des idées
sur comment faire sans ce paliatif ?



merci d'avance pour vos idées ou solutions.

--
DR

10 réponses

1 2
Avatar
DanielCo
Bonjour,

Pour éviter d'avoir à créer un classeur de test, est-ce que tu peux en
fournir un ? Tu le charges - sans données confidentielles - sur
http://cjoint.com et tu postes ici le lien généré.

Cordialement.

Daniel


Bonjour,

J'aurais besoin de faire une sorte de TCD inverse.
Je pars d'un tableau de données brutes en ligne de la facon suivante
client - référence - mois - quantité

Je fais un TCD pour obtenir une synthèse
en ligne: client référence
en colonne les mois
les données sont les quantités

Visuellement ca donne ca
| janvier 2012 | février 2012 | ....
--------------------------------------------------------------------------
référence 1 | client 1 | q1 | q2
| client 2 | q3 | q4
référence 2 | client 1 | q5 | q6
| client 3 | q7 | q8
...


Ce rendu permet une bonne visualisation des mois à venir. Les quantités sont
ajustées en fonction des tendances ( copier / coller du tcd et ajustement
manuel des valeurs quantités).
Une fois ces ajustements de prévisions réalisées, je voudrais retransformer
ces données en lignes pour pouvoir les réintégrer dans la GPAO.
client - référence - mois - quantité


J'ai trouvé une macro qui me permet de tranformer mon format TCD en ligne, si
il y une seule colonne de base ( par exemple, le client ou la référence )
mais pas 2 colonnes tel que présenté plus haut client + référence.


------------------------------------
Sub TCD_Inverse()
Dim SummaryTableRange As Range
Dim PivotTableSheet As Worksheet

Set SummaryTableRange = ActiveCell.CurrentRegion

If SummaryTableRange.Count = 1 Or SummaryTableRange.Rows.Count < 3 Then
MsgBox "Select a cell in the summary table.", vbCritical
Exit Sub
End If

ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlConsolidation, _
SourceData:=Array(SummaryTableRange.Address(True, True, xlR1C1,
True))) _
.CreatePivotTable TableDestination:="", _
TableName:="PivotTable1"
Set PivotTableSheet = ActiveSheet

With PivotTableSheet
.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
.PivotTables("PivotTable1").DataPivotField.PivotItems("Nombre de
Valeur").Position = 1
.PivotTables("PivotTable1").PivotFields("Ligne").Orientation =
xlHidden
' .PivotTables("PivotTable1").PivotFields("Ligne").Caption = "Toto"

.PivotTables("PivotTable1").PivotFields("Colonne").Orientation =
xlHidden
End With

Range("B4").ShowDetail = True
Application.DisplayAlerts = False
PivotTableSheet.Delete
Application.DisplayAlerts = True

End Sub

------------------------------------


En concaténant, client+référence dans une seule colonne au lieu de 2 colonnes
avant le TCD_Inverse() ca marchera mais auriez vous des idées sur comment
faire sans ce paliatif ?



merci d'avance pour vos idées ou solutions.
Avatar
Droopy191
Le 10/01/2013 16:23, DanielCo a écrit :
Bonjour,

Pour éviter d'avoir à créer un classeur de test, est-ce que tu peux en
fournir un ? Tu le charges - sans données confidentielles - sur
http://cjoint.com et tu postes ici le lien généré.




Voici
http://cjoint.com/?0AkrG6qyQqz



--
DR
Avatar
DanielCo
Le 10/01/2013 16:23, DanielCo a écrit :
Bonjour,

Pour éviter d'avoir à créer un classeur de test, est-ce que tu peux en
fournir un ? Tu le charges - sans données confidentielles - sur
http://cjoint.com et tu postes ici le lien généré.




Voici
http://cjoint.com/?0AkrG6qyQqz



Ca m'a bien fait transpirer... Les items ayant des noms de date, c'est
infernal. La macro colle les résultats à partir de la ligne 35, colonne
A.

Sub test()
Dim Plage As Range, C As Range, Ligne As Long, MAngl, Mois, Var
Dim PI As PivotItem, PI2 As PivotItem, PI3 As PivotItem, An As
String
Ligne = 35
MAngl = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec")
Mois = Array("janv", "févr", "mars", "avr", "mai", "juin", "juil",
"août", "sept", "oct", "nov", "déc")
With Sheets("Feuil1").PivotTables(1)
Sheets("Feuil1").Cells(Ligne, 1) = .RowFields(1).Name
Sheets("Feuil1").Cells(Ligne, 2) = .RowFields(2).Name
Sheets("Feuil1").Cells(Ligne, 3) = .ColumnFields(1).Name
Sheets("Feuil1").Cells(Ligne, 4) = .DataFields(1)
Ligne = Ligne + 1
For Each PI In .PivotFields(.RowFields(1).Name).PivotItems
For Each PI2 In .PivotFields(.RowFields(2).Name).PivotItems
For Each PI3 In
.PivotFields(.ColumnFields(1).Name).PivotItems
Sheets("Feuil1").Cells(Ligne, 1) = PI.Name
Sheets("Feuil1").Cells(Ligne, 2) = PI2.Name
Sheets("Feuil1").Cells(Ligne, 3) = PI3.Name
Sheets("Feuil1").Cells(Ligne, 3).NumberFormat =
"mmm-yy"
Var = Application.Index(Mois,
Application.Match(Split(PI3.Name, "-")(0), MAngl, 0)) & _
"-" & Split(PI3.Name, "-")(1)
On Error Resume Next
Sheets("Feuil1").Cells(Ligne, 4) =
.GetPivotData("Quantité", "Référence", PI.Name, _
"Client", PI2.Name, "Mois", Var)
If Err.Number > 0 Then Exit Sub
Ligne = Ligne + 1
Next PI3
Next PI2
Next PI
End With
End Sub

Daniel
Avatar
Droopy191
Le 11/01/2013 17:06, DanielCo a écrit :

Ca m'a bien fait transpirer... Les items ayant des noms de date, c'est
infernal. La macro colle les résultats à partir de la ligne 35, colonne A.


Daniel



Merci pour votre temps, ca marche


--
DR
Avatar
pom...pom...pom..
Bonsour®

"Droopy191" a écrit dans le message de groupe de discussion :
50eea088$0$1964$

Bonjour,

J'aurais besoin de faire une sorte de TCD inverse.
Une fois ces ajustements de prévisions réalisées, je voudrais
retransformer ces données en lignes pour pouvoir les réintégrer dans la
GPAO.
*********************
tu double-click sur la cellule en bas à droite de ton TCD
EXCEL te crée une feuille avec les données ayant servies ...
Avatar
DanielCo
tu double-click sur la cellule en bas à droite de ton TCD
EXCEL te crée une feuille avec les données ayant servies ...



Bonjour,
Tu ne récupères que le détail des données source pour cette cellule. Ce
qui était demandé était les mêmes données que le TCD, disposées
autrement.
Daniel
Avatar
Jacquouille
Allo Lille, Paris vous appelle. A vous .....
-))



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"pom...pom...pom.." a écrit dans le message de groupe de discussion :
kd3bmi$atq$

Bonsour®

"Droopy191" a écrit dans le message de groupe de discussion :
50eea088$0$1964$

Bonjour,

J'aurais besoin de faire une sorte de TCD inverse.
Une fois ces ajustements de prévisions réalisées, je voudrais
retransformer ces données en lignes pour pouvoir les réintégrer dans la
GPAO.
*********************
tu double-click sur la cellule en bas à droite de ton TCD
EXCEL te crée une feuille avec les données ayant servies ...
Avatar
pom...pom...pom..
Bonsour®

"DanielCo" a écrit dans le message de groupe de discussion :
kd3lqm$4sg$

tu double-click sur la cellule en bas à droite de ton TCD
EXCEL te crée une feuille avec les données ayant servies ...



Bonjour,
Tu ne récupères que le détail des données source pour cette cellule. Ce
qui était demandé était les mêmes données que le TCD, disposées
autrement.
Daniel
**************************
evidement ...

l'exemple (cijoint)proposé n'était pas un TCD ...

il faut utiliser un TCD avec total ligne et colonne
je persiste !!!
tu double-click sur la cellule en bas à droite de ton TCD
EXCEL te crée une feuille avec les données ayant servies ...
Avatar
DanielCo
Bonsour®

"DanielCo" a écrit dans le message de groupe de discussion :
kd3lqm$4sg$

tu double-click sur la cellule en bas à droite de ton TCD
EXCEL te crée une feuille avec les données ayant servies ...



Bonjour,
Tu ne récupères que le détail des données source pour cette cellule. Ce
qui était demandé était les mêmes données que le TCD, disposées
autrement.
Daniel
**************************
evidement ...

l'exemple (cijoint)proposé n'était pas un TCD ...



Bonjour,

J'ai créé un TCD dans le classeur que j'ai posté sur cjoint.

il faut utiliser un TCD avec total ligne et colonne



Pourquoi donc ?

je persiste !!!



perseverare...

Daniel
Avatar
Droopy191
Le 15/01/2013 11:40, pom...pom...pom.. a écrit :
Bonsour®

"Droopy191" a écrit dans le message de groupe de discussion :
50eea088$0$1964$

Bonjour,

J'aurais besoin de faire une sorte de TCD inverse.
Une fois ces ajustements de prévisions réalisées, je voudrais
retransformer ces données en lignes pour pouvoir les réintégrer dans la
GPAO.
*********************
tu double-click sur la cellule en bas à droite de ton TCD
EXCEL te crée une feuille avec les données ayant servies ...



Merci pour cette astuce.

Mes données de base sont issues d'un TCD mais en fait je fais un
copier/collez valeur de ce TCD pour pouvoir modifier les valeurs. Il
s'agit d'ajuster des prévisions de ventes.

C'est cette feuille qui dans la forme ressemble à un TCD que je
souhaitais retransformer.


--
DR
1 2