Fusion 2 TCD

Bonjour,

J'ai eu beau cherché, je n'ai pas trouvé ma solution.

J'ai créée 2 TCD que je voudrais fusionner en 1 seul.

Auriez-vous une solution à m'apporter.

N'oubliez pas de me donner vos étapes afin que je progresse sur Excel.

Merci d'avance.

Marie

88excel-stock.xlsx (132.33 Ko)

bonjour

ce sont les tableaux de données qu'il faut fusionner d'abord

(idée bizarre d'avoir fait 2 tableaux ?? )

Bonjour jmd,

Le problème est que les données proviennent de deux tableaux bien distincts extraits d'un logiciel ERP.

J'ai peur de créer des erreurs si je les fusionne.

C'est pourquoi, je demandai s'il y avait un moyen de fusionner les 2 TCD.

Cdlt.

Marie

Bonjour,

Une proposition à étudier.

Cdlt.

708excel-stock.xlsm (118.42 Ko)

Bonjour Jean Eric,

Merci pour ton retour, ton tableau me semble pas mal.

Pourrais tu m'expliquer comment tu as procédé, j'ai réellement besoin de progresser sur Excel, c'est un logiciel que j'affectionne particulièrement, mais j'ai encore pas mal de progrès à faire.

Merci d'avance.

Marie

Bonjour,

Et par ou dois je commencer pour mes explications ?

Ou que ne comprends tu pas ?

A te relire.

Cdlt.

Bonjour Jean-Eric,

Comment as tu réalisé le tableau des consolidations ?

Peux tu m'expliquer la macro pas à pas ?

Merci d'avance.

Marie

Bonjour Jean-Eric,

STP, ne m'oublie pas.

Marie

Bonjour,

Je te renvoie le fichier avec des commentaires pour les 2 procédures.

A te relire pour un complément d'informations.

Cdlt.

Option Explicit
'Déclaration des variables au niveau module
Dim wb As Workbook
Dim wsTable As Worksheet, wsPT As Worksheet
Dim lo As ListObject
'Consolidation et synthèse
Private Sub cmdGO_Click()
'Déclaration des variables au niveau procédure
Dim ws As Worksheet
Dim pt As PivotTable
Dim lo As ListObject
Dim rStart As Range, Rng As Range, rngGroup As Range
Dim lCol As Long, lastRow As Long
    'Optimisation procédure (gel affichage)
    Application.ScreenUpdating = False
    'Initialisation des variables
    Set wb = ActiveWorkbook
    Set wsTable = wb.Worksheets("CONSOLIDATION")
    Set wsPT = wb.Worksheets("TCD")
    'Tableau1
    Set lo = wsTable.ListObjects(1)

    With lo
        'RAZ Tableau1 en conservant la mise en forme et les formules
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        'Cellule pour la copie des données (B5)
        Set rStart = .InsertRowRange.Cells(2)
    End With

    lCol = 10

    ' Fusion des 2 plages de données
    For Each ws In wb.Worksheets
        If ws.Name <> wsTable.Name And ws.Name <> "TCD" Then
            'Dernière ligne non vide de la colonne A=1
            lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
            'Plage de données à copier
            Set Rng = ws.Cells(1).CurrentRegion.Offset(1).Resize(lastRow - 1, lCol)
            Rng.Copy
            rStart.PasteSpecial xlPasteValues
            'Inscription nom feuille dans Tableau1
            rStart.Offset(, -1).Resize(Rng.Rows.Count).Value = ws.Name
            Application.CutCopyMode = False
            'Prochaine cellule pour la copie suivante
            Set rStart = lo.HeaderRowRange.Cells(2).Offset(lo.ListRows.Count + 1)
        End If
    Next ws

    With wsPT
        'Initialisation variable TCD
        Set pt = .PivotTables(1)
        With pt
            'Actualisation TCD
            .PivotCache.Refresh
            'Groupement des données en mois et années
            Set rngGroup = .PivotFields("DelaiDemande").DataRange
            rngGroup.Cells(1).Group _
                    periods:=Array(False, False, False, False, True, False, True)
        End With
        'Activation feuille TCD
        .Activate
    End With

    'RAZ des variables
    Set rngGroup = Nothing: Set Rng = Nothing: Set rStart = Nothing
    Set lo = Nothing
    Set wsPT = Nothing: Set wsTable = Nothing
    Set wb = Nothing

End Sub
'RAZ tableau et actualisation TCD
Private Sub cmdRaz_Click()

    'Optimisation procédure (gel affichage)
    Application.ScreenUpdating = False
    'Initialisation des variables
    Set wb = ActiveWorkbook
    Set wsTable = wb.Worksheets("CONSOLIDATION")
    Set wsPT = wb.Worksheets("TCD")
    Set lo = wsTable.ListObjects(1)

    'RAZ tableau en conservant la mise en forme et les formules
    With lo
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
    End With
    'Actualisation TCD
    wsPT.PivotTables(1).PivotCache.Refresh

    'RAZ des variables
    Set lo = Nothing
    Set wsPT = Nothing: Set wsTable = Nothing
    Set wb = Nothing

End Sub

Jean-Eric,

Je ne vois pas tes commentaires au niveau du fichier !

Peux tu me dire ou les trouver ?

Cdlt.

Marie

Re,

Pour voir les procédures :

  • Faire ALT F11 pour ouvrir l'éditeur VBE.
    Puis aller dans le module Feuil4 (CONSOLIDATION).
Cdlt.

Merci beaucoup Jean Eric

Ton tableau fonctionne super bien

il ne me reste plus qu'à décortiquer les macros (encore beaucoup de boulot et d'apprentissage !!!)

Cdlt.

Marie

Rechercher des sujets similaires à "fusion tcd"