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 :

Tableau croisé dynamique de taille variable [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Assistant achats
    Inscrit en
    Février 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant achats

    Informations forums :
    Inscription : Février 2020
    Messages : 8
    Par défaut Tableau croisé dynamique de taille variable
    Bonjour à tous,

    Je suis amené à refaire les mêmes actions dans un fichier Excel chaque jour, je me suis donc lancé dans une macro sans la moindre expérience.
    Tout allait bien avec l'enregistreur jusqu'à ce que je sois arrivé à la création d'un tableau dynamique.
    Le nombre de lignes étant variable d'un jour à l'autre, je ne peux utiliser l'enregistreur. J'ai essayé de nombreuses fois en cherchant sur internet mais mon niveau est trop faible, c'est pourquoi j'aurais besoin de votre aide.

    Mes données sont sous l'onglet "Schedule" - Il y a plus de 30000 lignes
    Je souhaiterais que le tableau dynamique soit créé sous l'onglet "Horizon_Planification" (page encore vierge à l'heure actuelle)

    Filtres sur "Flux" "Horizon_Planification" et "Confirmed"
    Lignes "Gestionnaire"
    Valeurs "Confirmed"

    Vous trouverez le fichier ci-joint, merci d'avance pour votre aide !

    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
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Schedule!R1C1:R33712C19", Version:=6).CreatePivotTable TableDestination:= _
            "Horizon_Planification!R3C1", TableName:="Tableau croisé dynamique1", DefaultVersion:=6
        Sheets("Horizon_Planification").Select
        Cells(3, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Flux")
            .Orientation = xlPageField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( "Horizon_Planification")
            .Orientation = xlPageField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( "CONFIRMED")
            .Orientation = xlPageField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("CONFIRMED"), _
            "Nombre de CONFIRMED", xlCount
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Gestionnaire")
            .Orientation = xlRowField
            .Position = 1
        End With
    Cordialement, Umberto
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par uber4987 Voir le message
    Bonjour,

    Essayez :
    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
    Option Explicit
     
    Sub CreationTcd()
     
    Dim ShSource As Worksheet, ShTcd As Worksheet
    Dim I As Long, LigneDeTitre As Long, DerniereLigne As Long, DerniereColonne As Long
    Dim AireTcd As Range
    Dim Pvt As PivotTable
     
        On Error GoTo FinCreationTcd
     
        Set ShSource = Sheets("Schedule")
        Set ShTcd = Sheets("Horizon_Planification")
        With ShSource
             LigneDeTitre = 1
             DerniereColonne = .Cells(LigneDeTitre, .Columns.Count).End(xlToLeft).Column
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
             Set AireTcd = .Range(.Cells(LigneDeTitre, 1), .Cells(DerniereLigne, DerniereColonne))
        End With
     
        If ShTcd.PivotTables.Count > 0 Then
           With ShTcd
                For I = .PivotTables.Count To 1 Step -1
                     .PivotTables(I).TableRange2.Delete
                Next I
            End With
        End If
     
        With ActiveWorkbook
             .PivotCaches.Create(SourceType:=xlDatabase, SourceData:=AireTcd, Version:=xlPivotTableVersion10).CreatePivotTable _
              TableDestination:=ShTcd.Cells(8, 1), TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10
             .ShowPivotTableFieldList = True
        End With
     
        Set Pvt = ShTcd.PivotTables("TCD1")
     
        With Pvt
             With .PivotFields("Flux")
                .Orientation = xlPageField
                .Position = 1
            End With
            With .PivotFields("Planification_Horizon")
                .Orientation = xlPageField
                .Position = 2
            End With
     
            .AddDataField .PivotFields("CONFIRMED"), "Nombre de CONFIRMED", xlCount
     
            With .PivotFields("CONFIRMED")
                .Orientation = xlPageField
                .Position = 3
            End With
            With .PivotFields("Gestionnaire")
                .Orientation = xlRowField
                .Position = 1
            End With
        End With
     
        GoTo FinCreationTcd
     
    FinCreationTcd:
     
        Set ShTcd = Nothing
        Set Pvt = Nothing
        Set AireTcd = Nothing
        Set ShSource = Nothing
     
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Assistant achats
    Inscrit en
    Février 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant achats

    Informations forums :
    Inscription : Février 2020
    Messages : 8
    Par défaut
    Bonjour,

    Tout d'abord, merci beaucoup pour votre aide !
    Je viens d'essayer, cela marche sur le fichier réduit que j'ai joint mais pas sur mon fichier normal comportant plus de 30000 lignes.
    Je n'ai eu aucun message d'erreur mais je n'ai pas eu de tableau croisé dynamique non plus, la page Horizon_Planification reste vierge.

    Vous avez une idée du problème ?

    Merci d'avance,
    Bien à vous, Umberto

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par uber4987 Voir le message
    A quelle ligne commence votre deuxième fichier (Ligne de titre) ?

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Il suffit de mettre les données sous forme de tableau et de baser le TCD sur le tableau pour qu'il prenne automatiquement toutes les lignes du tableau.

    Par ailleurs on conseille de créer manuellement le TCD et de simplement supprimer les anciennes lignes de la source et remplacer par les nouvelles à chaque période.

    Sinon baser le TCD sur le fichier extrait sans le dupliquer dans le classeur.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Assistant achats
    Inscrit en
    Février 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant achats

    Informations forums :
    Inscription : Février 2020
    Messages : 8
    Par défaut
    @Eric : Le tableau croisé dynamique peut commencer sur la 1ère ligne de la 1ère colonne, il n'y a pas de titre, pourvu que ça soit sous un autre onglet.

    Il y a juste des données sous le 1er onglet "Schedules" à ce stade-là, sur le 2ème onglet "Horizon_Planification" je souhaite insérer le tableau dynamique pour que chacun puisse filtrer sur les lignes le concernant.


    @Chris Bonjour et merci pour l'aide également, par contre, je suis vraiment débutant (bien que j'aie réussi de belles choses pour un novice si vous regardez la macro "ok") mais je manque cruellement de compétences que pour définir mes données sous forme de tableau. Je n'ai pas compris la dernière phrase également, j'imagine que c'est en lien avec la solution proposée ci-dessus.

    Mais je vous serais très reconnaissant si vous m'aidiez à passer cette étape qui me bloque depuis plusieurs semaines !

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

Discussions similaires

  1. [XL-2016] Tableau Croisé Dynamique et variables
    Par Lyricslife dans le forum Excel
    Réponses: 5
    Dernier message: 18/02/2018, 22h46
  2. [XL-2003] Problème tableau croisé dynamique avec variable
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 22/05/2012, 18h27
  3. Création d'un tableau croisé dynamique avec base données variable
    Par div20 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/01/2012, 23h43
  4. tableau croisé dynamique avec plage de sélection variable
    Par nat44 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2008, 13h29
  5. Masquer des items pour une variable d'un tableau croisé dynamique en VBA
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/10/2007, 16h35

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