XL 2016 tableau croisé dynamique automatique

eric123

XLDnaute Occasionnel
Bonjour à tous,

Chaque mois, je dois traiter et analyser des données que je reporte dans un tableau croisé dynamique et un graphique.

La base de données peut faire plusieurs lignes (une centaine) et chaque mois le nombre de lignes est différente.

Je voudrais automatiser ces opérations c’est-à-dire avoir un classeur ou je colle mes données et cela créerai mon tableau croise dynamique sur une feuille et mon graphique sur l’autre.

Cela est-il possible via VBA ou autre ?

J’ai placé un fichier exemple sans le graphique

Bonne journée et par avance merci,
 

Pièces jointes

  • H CONTRAT 0122.xlsx
    13.4 KB · Affichages: 17

eric123

XLDnaute Occasionnel
Tu confonds impossibilité et mauvaise pratique...

Je n'ai pour ma part jamais parler d'impossibilité...

En plus le code, assez pourri de 190 lignes, suppose d'avoir copié les données du classeur externe dans le classeur contenant les macros ou l'inverse...

Le remaniement de la source n'étant pas ici indispensable, le(s) TCD peu(ve)t se baser directement sur le fichier fermé...

Mais je te laisse à tes certitudes et ne te proposerai plus rien qui puisse les ébranler. Bonne continuation.

Bonjour à Staple et dysorthographie ;)
Bonjour Chris,
je ne voulais pas te vexer mais juste te montrer ce que j'avais essayé de faire par moi-même.
j'apprécie et apprend toujours de vous tous ici.
si je t'ai froissé, cela n'étais ma mon but et je m'en excuse.
Bon week-end à toutes et tous,
Eric,
 

eric123

XLDnaute Occasionnel
bonjour,
perso voila ce que j'avais proposé sur Développez.com!

Bonjour dysorthographie,
c'est assez impressionnant je vais m'en inspirer. le mien, je l'ai fait avec enregistreur de macro d'où les nombreuses lignes…
 

Staple1600

XLDnaute Barbatruc
Re

Juste parce il fait froid dehors et qu'il faut que dimanche se passe
Une petite resucée basique de la routine que j'évoquais plus bas
VB:
Sub Test_TCD_Simple_par_Macro()
Dim pt As PivotTable, Kohoutek, Pyragony%
Set pt = Creation_TCD(ActiveSheet.Cells(1).CurrentRegion, xlDatabase)
Kohoutek = Array(Array("ITEMS", 1, 1), Array("REFS", 1, 2))
Application.ScreenUpdating = False
For Pyragony = 0 To UBound(Kohoutek, 1)
With pt.PivotFields(Kohoutek(Pyragony)(0))
    .Orientation = Kohoutek(Pyragony)(1)
    .Position = Kohoutek(Pyragony)(2)
End With
Next
pt.AddDataField pt.PivotFields("PRIX"), "Somme de PRIX", xlSum
End Sub

Private Function Creation_TCD(ByRef srcData As Range, Bazinga As XlPivotTableSourceType) As PivotTable
Dim ptCache As PivotCache, TCD As PivotTable, F As Worksheet
Set ptCache = ThisWorkbook.PivotCaches.Create(SourceType:=Bazinga, SourceData:=srcData)
Set F = ThisWorkbook.Sheets.Add
Set TCD = ptCache.CreatePivotTable(TableDestination:=F.Cells(3, 1))
Set Creation_TCD = TCD
End Function
NB: Si vous aussi vous ...avez froid, il y a deux bonus dans le code pour occuper un temps votre après-midi
;)
 

Staple1600

XLDnaute Barbatruc
Re

Au cas où, j'ajoute une macro pour créer de quoi tester le code du message précédent
VB:
Sub Pour_tester()
[A1:C1].Value = [{"ITEMS","REFS","PRIX"}]: [B2:B17] = "=""ref""&INT(ROW()*RAND()*PI())": [C2:C17] = "=INT(ROW()*21)/2"
[A2:A5] = "ITEM1": [A3:A8] = "ITEM2": [A9:A11] = "ITEM3": [A12:A17] = "ITEM4": [A1].CurrentRegion = [A1].CurrentRegion.Value
End Sub
Mode d'emploi
1) On lance cette macro sur une feuille vierge
2) On reste sur cette feuille pour lancer la macro Test_TCD_Simple_par_Macro
(cf le message précédent)

Normalement, on obtient un petit TCD sans trop se fatiguer.

Mais comme dit plus bas , désormais c'est plus intéressant et plus riche en possibilité de passer par PQ (aka Power Query)
 

eric123

XLDnaute Occasionnel
Re

Au cas où, j'ajoute une macro pour créer de quoi tester le code du message précédent
VB:
Sub Pour_tester()
[A1:C1].Value = [{"ITEMS","REFS","PRIX"}]: [B2:B17] = "=""ref""&INT(ROW()*RAND()*PI())": [C2:C17] = "=INT(ROW()*21)/2"
[A2:A5] = "ITEM1": [A3:A8] = "ITEM2": [A9:A11] = "ITEM3": [A12:A17] = "ITEM4": [A1].CurrentRegion = [A1].CurrentRegion.Value
End Sub
Mode d'emploi
1) On lance cette macro sur une feuille vierge
2) On reste sur cette feuille pour lancer la macro Test_TCD_Simple_par_Macro
(cf le message précédent)

Normalement, on obtient un petit TCD sans trop se fatiguer.

Mais comme dit plus bas , désormais c'est plus intéressant et plus riche en possibilité de passer par PQ (aka Power Query)
Bonjour Staple, merci :)
oui je vais me pencher sur PQ mais au boulot je n'ai que Excel 2010 donc a priori pas de PQ ?
Donc j'essais de faire autrement
Bon WE,
 

dysorthographie

XLDnaute Accro
Bonjour dysorthographie,
c'est assez impressionnant je vais m'en inspirer. le mien, je l'ai fait avec enregistreur de macro d'où les nombreuses lignes…
Bonjour,
A la base le miens également, mais successivement pour en connaître le découpage précis de chaques étape.

Le module de classe est une sorte de boîte à outil qui contient toutes les étapes séparément et dans le module standard on trouve la méthode d'utilisation !
 

Staple1600

XLDnaute Barbatruc
Re

[aparté]
D.D
Vous riez à gorge déployée.
Ce qui est une bonne chose. ;)
Mais avez-vous identifiez les deux bonus que j'indiquais dans le message#18?
L'un doit réveiller l'enfant que vous fûtes, l'autre aurait pu faire lever un sourcil à l'ado qui succéda à cet enfant dés lors réveillé.
;)
[/aparté]
 

D.D.

XLDnaute Impliqué
Re

[aparté]
D.D
Vous riez à gorge déployée.
Ce qui est une bonne chose. ;)
Mais avez-vous identifiez les deux bonus que j'indiquais dans le message#18?
L'un doit réveiller l'enfant que vous fûtes, l'autre aurait pu faire lever un sourcil à l'ado qui succéda à cet enfant dés lors réveillé.
;)
[/aparté]
Hello,

Oui, j'ai identifié. En revanche pas encore exploité, je n'y ai plus pensé en arrivant chez moi hier soir.
Ce message m'incite à le faire d'autant plus vite maintenant :)
Bonne journée.
 

Statistiques des forums

Discussions
315 095
Messages
2 116 169
Membres
112 676
dernier inscrit
little_b