Création d'un TDC à partir de plusieurs feuilles

Bonjour à tous,

Je m'adresse à vous pour une opération bien spécifique.

Je suis en train de personnaliser mon suivi de budget personnel sur Excel.

A ce titre, j'ai un document excel qui sur chaque feuille, répertorie mes dépenses et entrées d'argent par mois.

Mes feuilles sont organisées de la manière suivante...

Nom de la feuille 1 : 08 - 2013

Nom de la feuille 2 : 09 - 2013

Nom de la feuille 3 : 10 - 2013

Sur chacune de mes feuilles, j'ai créé un format de tableau identique. Les entêtes sont les suivantes :

Date du Paiement | Description | Catégorie | Montant

J'ai joint un jpeg afin que vous ayez un aperçu de comment s'organise mes feuilles

depenses 10 13

Mon objectif est de créer un tableau croisé dynamique qui me synthétise mes dépenses par mois afin que je puisse sur un même tableau, constater l’évolution de mes dépenses selon les différents postes que j'ai défini (Catégorie & Description).

Actuellement, je m'en sors très bien pour créer un TDC d'une seule feuille.

Cependant, j'ai une réel difficulté lorsque je prends en compte mes autres feuilles (grâce à l'Assistant Tableau Croisé Dynamique).

En effet, je sélectionnes les tableaux que je veux prendre en compte et dans ce tableau "final", les entêtes de mes tableaux disparaissent et les seuls infos présentent dans mon TDC sont Étiquette de ligne et Étiquette de colonne...

In fine, j'aimerai avoir un résultat qui ressemble au deuxième fichier que je vous ai joint

tdc depenses x

En gros, première colonne mes catégories et descriptions associées, et chaque colonne qui suit, le mois concerné en entête avec en dessous, les montants correspondants aux dépenses...

J'espère avoir été le plus précis possible.

Merci par avance pour votre aide.

Cordialement,

Bonjour,

Peux-tu envoyer ton fichier anonymisé avec des explications et le(s) résultat(s) désiré précisément?

A te relire.

Cdlt

Fichier joint,

Merci beaucoup !


Je me suis trompé, je vous l'ai envoyé en MP...

Vous trouverez le fichier joint dans ce topic.

Pour que vous compreniez le résultat que j'espère, rien de plus simple que de regarder mon petit fichier.

J'y ai joins quelques petits commentaires,

Merci,


Je me suis trompé, je vous l'ai envoyé en MP...

Vous trouverez le fichier joint dans ce topic.

Pour que vous compreniez le résultat que j'espère, rien de plus simple que de regarder mon petit fichier.

J'y ai joins quelques petits commentaires,

Merci,

30envoi-forum.zip (9.80 Ko)
37envoi-forum.zip (9.80 Ko)

Est-ce que des magiciens d'Excel auraient des pistes pour moi ?

Merci...

Re,

Un premier essai à peaufiner

Ctrl + w pour lancer la procédure.

J'attends tes commentaires

Cdlt

76envoi-forum.xlsm (28.21 Ko)

Vraiment impressionnant ! Merci !

Ceci correspondant à peu près à ce que je veux obtenir.

Question : Comment avez-vous fait ?

Pouvez-vous me donner les quelques étapes afin que je puisse répéter l'opération et mettre en forme à souhait ?

Merci !!

Re,

Pour quelqu'un de pressé, tu as tardé

Ceci correspondant à peu près à ce que je veux obtenir.

Profites Que veux-tu de plus?

Pour les explications, elles vont venir après, sur cette même page...prochainement. Ne clos donc pas le sujet.

A te relire.

Cdlt

Merci

Oui je tardes, quelques appels importants dans le même temps

Je voudrais pas trop en demander :p

D'un point de vue fonctionnel c'est exactement ce que je veux.

J'aimerai bien avoir le look & field du tableau croisé dynamique que j'avais mis dans mes premiers liens, est-ce possible ?

Sinon, comment avez-vous rajouté le champ année dans le tdc ?

De plus, un point important, comment vont se faire les ajouts de nouvelles feuilles et leur prise en compte de le TDC ?

Merci beaucoup, je pense que la démarche que vous allez exposer pour créer ce type de tableau me permettra de finaliser ça

Merci encore,

Taywal

Re,

Et tu n'aimerais pas un petit graphique

Patientes pour la suite...

Cdlt

Pourquoi pas

A voir après si ça fait pas trop lourd en terme d'infos ;

Oui je sais je suis difficile

Bonjour,

Comme promis, les explications du code

L"ensemble comporte 3 étapes.

En effectuant un appui simultané sur les touches Ctrl+w:

On supprime les feuilles "Consolidation" et "Synthèse" pour les recréer par la suite.

On exécute ensuite la procédure de fusion des feuilles (suivant leurs nombres).

On termine par la création du tableau croisé dynamique (TCD).

* avec un regroupement Années/mois.

Le classeur a été mis à jour.

Pour la création du graphique, me donner ton souhait (je n'ai que des valeurs négatives )

A te relire.

Cdlt

Option Explicit
' ----------------------------------------------------------------------------------------
' 1 - INITIALISATION
' ----------------------------------------------------------------------------------------
Public Sub Traitement_données()
      ' Ctrl + w pour lancer la macro
10        With Application
              ' on désactive l'affichage des messages d'alerte.
20            .DisplayAlerts = False
              ' on désactive l'actualisation de l'écran.
30            .ScreenUpdating = False
40        End With
          ' on supprime les 2 feuilles de consolidation et de synthèse
          ' avec un gestion d'erreur si elles n'existent pas.
50        On Error Resume Next
60            Worksheets("Consolidation").Delete
70            Worksheets("Synthèse").Delete
80        On Error GoTo 0
          ' on réactive l'affichage des messages d'alerte.
90        Application.DisplayAlerts = True
          ' on crée la feuille de consolidation.
100       Consolidation_feuilles
          ' on crée le rapport de tableau croisé dynamique.
110       Création_TCD
End Sub
' ----------------------------------------------------------------------------------------
' 2 - FUSION FEUILLES
' ----------------------------------------------------------------------------------------
Private Sub Consolidation_feuilles()
      ' fusion des différentes feuilles mensuelles en une.
          ' création feuille de consolidation
10        ActiveWorkbook.Worksheets.Add after:=Worksheets(Worksheets.Count)
20        ActiveSheet.Name = "Consolidation"
30        Set wS_1 = ActiveSheet
          ' on boucle sur chaque feuille du classeur
40        For Each wS In ActiveWorkbook.Worksheets
50            If wS.Name <> "Consolidation" Then
                  ' définition de la plage à copier
60                X = wS.UsedRange.Address
70                With wS.UsedRange
80                    .Rows(1).Copy wS_1.Range("A1")
90                    nLigne = wS_1.Range("A" & Rows.Count).End(xlUp).Row + 1
100                   .Offset(1).Resize(.Rows.Count - 1).Copy wS_1.Range("A" & nLigne)
110               End With
120           End If
130       Next
140       Set wS_1 = Nothing
End Sub
' ----------------------------------------------------------------------------------------
' 2 - CREATION TCD -TABLEAU CROISE DYNAMIQUE
' ----------------------------------------------------------------------------------------
Private Sub Création_TCD()
      ' création du tableau croisé dynamique (TCD)
10        Set wS_1 = Worksheets("Consolidation")
          ' définition de la plage pour la création du TCD
20        Set Plage = wS_1.Range("A1").CurrentRegion
          ' création feuille de de synthèse
30        ActiveWorkbook.Worksheets.Add after:=Worksheets(Worksheets.Count)
40        ActiveSheet.Name = "Synthèse"
50        Set wS_2 = ActiveSheet
          ' définition du cache du TCD équivalant à la plage
60        Set Cache = ActiveWorkbook.PivotCaches.Add _
              (SourceType:=xlDatabase, SourceData:=Plage)
          ' création du TCD
70        Set TCD = Cache.CreatePivotTable _
              (tabledestination:=wS_2.Range("A1"), tablename:="TCD_1")
          ' on désactive la mise à jour pendant la cr&tion du TCD.
80        TCD.ManualUpdate = True
          'Mise en forme TCD
90        With TCD
              ' mise place des étiquettes de lignes.
100           With .PivotFields("Description")
110               .Orientation = xlRowField
120               .Position = 1
130               .LayoutSubtotalLocation = xlAtTop
140               .LayoutForm = xlOutline
150           End With
160           With .PivotFields("Catégorie")
170               .Orientation = xlRowField
180               .Position = 2
190               .LayoutSubtotalLocation = xlAtTop
200               .LayoutForm = xlOutline
210           End With
              ' mise en place des étiquettes de colonnes.
220           .PivotFields("Date du paiement").Orientation = xlColumnField
              ' mise en place des champs de valeurs.
230           With .PivotFields("Montant")
240               .Orientation = xlDataField
250               .Function = xlSum
260               .Caption = "Montants "
                  ' format nombre personnalisé au choix.
                  '.NumberFormat = "# ##0.00"
                  '.NumberFormat = "[Blue]# ##0.00;[Red](# ##0.00));;"
270               .NumberFormat = "# ##0.00;-# ##0.00;;"
280           End With
              ' total général colonnes.
290           .ColumnGrand = True
              ' total général lignes.
300           .RowGrand = True
310       End With
          ' traitement des valeurs 'vides'.
320       TCD.NullString = "0"
          ' calcul du TCD.
330       TCD.ManualUpdate = False
          ' regroupement année, mois.
340       TCD.PivotFields("Date du paiement").LabelRange.Group Start:=True, End:=True, _
                Periods:=Array(False, False, False, False, True, False, True)
          ' suppression de tous les sous-totaux (les 2 lignes sont nécessaires!).
          'TCD.PivotFields("Description").Subtotals(1) = True
          'TCD.PivotFields("Description").Subtotals(1) = False
          ' spécifie le style de tableau croisé dynamique
350       TCD.TableStyle2 = "PivotStyleLight16"
360       Range("A:E").EntireColumn.AutoFit
370       ActiveWindow.DisplayGridlines = False
380       Range("A1").Select
End Sub

Re,

Oups

J'ai rétabli le fonctionnement du 'Ctrl + w'.

Désolé.

Cdlt

Merci beaucoup pour ce retour

Je vais mettre en application maintenant.

Cordialement,

Rechercher des sujets similaires à "creation tdc partir feuilles"