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 :

actualiser un TCD


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut actualiser un TCD
    Bonjour à tous et à toutes ,
    Sur un même fichier , j'ai une base de données et mon TCD que j'ai crée par le biais d'une macro intitulé "EchangesCP" (cette macro contient la variable lastrow qui definie la derniere ligne de ma base de données).

    Ma base de données se trouve sur l'onglet "donnees hermes" et mon TCD se trouve sur l'onglet "feuil1".

    Chaque jour, de nouvelle ligne viennent se rajouter à ma base de données.
    Mon soucis c'est que je ne sais pas actualiser automatiquement (par le bais d'une macro) mon tableau.
    Actuellement, pour palier à ce problème, chaque jour, j'execute ma macro ("EchangeCP") pour creer un nouveau TCD : ce qui n'est pas franchement agréable car cela m'oblige a effacer l'ancien TCD car à chaque fois que je crée un nouveau TCD, il se rajoute sur une nouvelle feuille intitulé "Feuil2" ou se trouve le nouveau TCD.

    Merci de votre aide

    Vous trouverez ci dessous ma macro

    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
    Sub EchangesCP()
     
    ' Macro2 Macro
    ' Macro enregistrée le 05/11/2008 par IDCO1
    '
    Application.ScreenUpdating = False 'désactive la mise à jour de l'écran
     
    Dim lastrow
    lastrow = Range("A2").End(xlDown).Row
     
    Cells.Select
    On Error Resume Next
    ActiveSheet.ShowAllData
     
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'donnees hermes'!R2C1:R" & lastrow & "C24").CreatePivotTable TableDestination:="", _
            TableName:="Tableau croisé dynamique2", DefaultVersion:= _
            xlPivotTableVersion10
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
        ActiveSheet.Cells(3, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Code liaison")
            .Orientation = xlPageField
            .Position = 1
        End With
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Transporteur")
            .Orientation = xlPageField
            .Position = 1
        End With
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("ligne")
            .Orientation = xlRowField
            .Position = 1
        End With
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("date")
            .Orientation = xlRowField
            .Position = 2
        End With
     
        Range("B5").Select
        Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
            False, True, False, False)
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("quai")
            .Orientation = xlRowField
            .Position = 3
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique2").PivotFields( _
            "CP TOTAL (pleins + vides)"), "Somme de CP TOTAL (pleins + vides)", xlSum
        Columns("D:D").Select
        Selection.NumberFormat = "#,##0"
        Columns("D:D").EntireColumn.AutoFit
        Range("A4").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Somme de CP TOTAL (pleins + vides)").Caption = " CP TOTAL (pleins + vides)"
        Columns("A:A").EntireColumn.AutoFit
     
    Application.ScreenUpdating = True 'rétablit la mise à jour de l'écran
     
     
    End Sub

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    ton code est presqu'au point.

    Il lui manque :
    1) la suppression de la feuille du TCD avant la création du nouveau (attention à la première exécution, cette feuille doit exister).
    2) Le rename de la feuille qui contient le tcd après création (activesheet).

    Et alors plus de problème.

    car ton code est bien fait puisqu'il gère le nombre de ligne variable dans la source.

    Si je suppose que tu renommeras ta feuille de tcd en TCD2, le code complet devrait ressembler à ceci :

    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
    Sub EchangesCP()
     
    ' Macro2 Macro
    ' Macro enregistrée le 05/11/2008 par IDCO1
    '
    Application.ScreenUpdating = False 'désactive la mise à jour de l'écran
     
    Dim lastrow
    lastrow = Range("A2").End(xlDown).Row
     
    Cells.Select
    On Error Resume Next
    ActiveSheet.ShowAllData
    
                    Application.DisplayAlerts = False
                    Sheets("TCD2").Delete
                    Application.DisplayAlerts = True
     
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'donnees hermes'!R2C1:R" & lastrow & "C24").CreatePivotTable TableDestination:="", _
            TableName:="Tableau croisé dynamique2", DefaultVersion:= _
            xlPivotTableVersion10
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
        ActiveSheet.Cells(3, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Code liaison")
            .Orientation = xlPageField
            .Position = 1
        End With
        
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Transporteur")
            .Orientation = xlPageField
            .Position = 1
        End With
        
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("ligne")
            .Orientation = xlRowField
            .Position = 1
        End With
        
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("date")
            .Orientation = xlRowField
            .Position = 2
        End With
        
        Range("B5").Select
        Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
            False, True, False, False)
        
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("quai")
            .Orientation = xlRowField
            .Position = 3
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique2").PivotFields( _
            "CP TOTAL (pleins + vides)"), "Somme de CP TOTAL (pleins + vides)", xlSum
        Columns("D:D").Select
        Selection.NumberFormat = "#,##0"
        Columns("D:D").EntireColumn.AutoFit
        Range("A4").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Somme de CP TOTAL (pleins + vides)").Caption = " CP TOTAL (pleins + vides)"
        Columns("A:A").EntireColumn.AutoFit
        ActiveSheet.Name = "TCD2"
     
    Application.ScreenUpdating = True 'rétablit la mise à jour de l'écran
     
     
    End Sub

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut MERCI
    Merci enormement Godzestla ....
    ton code fonctionne à merveille.....

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Problème résolu?

    Bouton !

    Merci
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2014, 15h04
  2. [XL-2007] Actualisation de TCD trop long
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 13/06/2012, 09h48
  3. Actualiser une TCD crée des nouvelles connexions
    Par zanoubya dans le forum Excel
    Réponses: 0
    Dernier message: 09/01/2012, 18h16
  4. [XL-2007] Actualiser un TCD
    Par Antoon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/04/2009, 19h53
  5. Actualiser un TCD et executer une autre fonction en même temps
    Par lbar012001 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 09h08

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