IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro de création de TCD utilisable sur plusieurs fichiers


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Par défaut Macro de création de TCD utilisable sur plusieurs fichiers
    Bonjour à tous,

    Alors voilà, je viens vous voir aujourd'hui car j'aurai vraiment besoin d'un programme, cependant il dépasse mon niveau d'apprenti à VBA. Je reçois chaque semaine un Plan de livraison (exemple en pièce jointe) qui contient une liste en général de plusieurs milliers de lignes avec des pièces à livrer. Sur chaque ligne il y a : la référence de la pièce, son nom, une date de livraison et une quantité.
    Le soucis c'est que sur plusieurs milliers de lignes, c'est illisible... Donc j'ai recherché comment faire, et j’ai découvert les TCD : un super outil d'ailleurs, cependant le plan de livraison étant différent chaque semaine, il faut recréer le TCD toutes les semaines en rentrant correctement les bons paramètres, un enfer surtout que je ne maîtrise vraiment pas ces TCD !

    J'ai pensé donc à un code qui permettrai à la réception de chaque plan de livraison, de créer automatiquement le TCD qui détaillerai sur les deux premières colonnes les références et désignations de chaque pièce, sur les colonnes suivantes les mois de l'année (janvier à décembre 2015), et qui donnerai une quantité totale à livrer pour chaque pièce à chaque mois.

    Alors après quelques recherches sur internet, je suis tombé sur un sujet un peu similaire au miens , qui y détaillait un code vraiment pas mal pour mon problème (code ci-dessous). Cependant j'ai vraiment beaucoup de mal à le comprendre, et à essayer de l'adapter à mon soucis... J'ai déjà créé un classeur de macro personnel, je sais comment rajouter une icone pour pouvoir utiliser une macro dans n'importe quel autre fichier, il ne me reste "plus que" le code à adapter...

    Si quelqu'un pouvait éventuellement m'aider sur cela, ce serait génial !
    Je vous met également en pièce jointe le document vierge qui était donné dans le lien pour l'utilisation du code ci-dessous.

    Merci beaucoup,

    Victorien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Explicit
    'Option Private Module
     
    Public Sub Traitement_Importation()
    Dim wb As Workbook
    Dim wsData As Worksheet, wsPT As Worksheet
    Dim lastCol As Long, lastRow As Long
    Dim lo As ListObject
    Dim ptCache As PivotCache
    Dim pt As PivotTable
    Dim CalcMode As XlCalculation
     
        With Application
            CalcMode = .Calculation
            .Calculation = xlCalculationManual
            .ScreenUpdating = False
        End With
     
        Set wb = ActiveWorkbook
        Set wsData = wb.Worksheets(1)
        With wsData
            lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
            lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
            Set lo = wsData.ListObjects.Add(xlSrcRange, .Cells(1).Resize(lastRow, lastCol), , xlNo)
            With lo
                .Name = "tblImportation"
                .TableStyle = "TableStyleLight8"
            End With
        End With
     
        wb.Worksheets.Add After:=Worksheets(Worksheets.Count)
        Set wsPT = ActiveSheet
        ActiveSheet.Name = "TCD"
     
        With wsPT
            Set ptCache = wb.PivotCaches.Create(xlDatabase, lo.Range, 3)
            Set pt = ptCache.CreatePivotTable(.Cells(1), "PT_1", , 3)
            With pt
                .ManualUpdate = True
                With .PivotFields("Colonne2")
                    .Orientation = xlRowField
                   .Caption = "Mois"
                End With
                With .PivotFields("Colonne7")
                    .Orientation = xlDataField
                    .Position = 1
                    .Function = xlSum
                    .NumberFormat = "#,##0"
                    .Caption = "Colonne7 "
                End With
                With .PivotFields("Colonne9")
                    .Orientation = xlDataField
                    .Position = 2
                    .Function = xlSum
                    .NumberFormat = "#,##0"
                    .Caption = "Colonne9 "
                End With
               .ManualUpdate = False
                .ManualUpdate = True
                .PivotFields("Mois").LabelRange.Offset(1, 0).Group Start:=True, End:=True, _
                        Periods:=Array(False, False, False, False, True, False, False)
                .RowAxisLayout xlTabularRow
                .TableStyle2 = "PivotStyleMedium2"
                .ManualUpdate = False
            End With
        End With
     
        Application.Calculation = CalcMode
     
        Set pt = Nothing
        Set ptCache = Nothing
        Set lo = Nothing
        Set wsPT = Nothing: Set wsData = Nothing
        Set wb = Nothing
     
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-MAC 2011] Utiliser TCD + LIREDONNEESTABCROISDYNAMIQUE sur plusieurs onglets
    Par YannMichel dans le forum Excel
    Réponses: 3
    Dernier message: 22/01/2014, 15h30
  2. [HTML] création de zone cliquable sur plusieurs images succésive
    Par Xander8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/07/2008, 18h59
  3. utiliser une macro sur plusieurs fichiers
    Par papimcha dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 25/04/2008, 16h23
  4. Macros sur Plusieurs fichiers Excel
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 11h21
  5. Création DLL pour utilisation sur VBA
    Par Fbartolo dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2005, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo