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 :

[Excel 365 FR/UK - VBA] : Pivot Table - passage des attributs via étiquettes [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 22
    Par défaut [Excel 365 FR/UK - VBA] : Pivot Table - passage des attributs via étiquettes
    Bonjour,

    Je me permets de poster ma demande ici car je n'ai pas trouvé de solution à mon problème malgré plusieurs recherches sur le net.

    Je m'explique :

    1. Le sujet tourne autour des macros VBA et de la création de TCD (Tableau croisé dynamique ou Pivot Table) :
    2 .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "database", Version:=8).CreatePivotTable TableDestination:="Feuil1!R3C2", _
            TableName:="Tableau croisé dynamique1", DefaultVersion:=8
    3. Mon code crée à partir d'un bouton, la copie d'une feuille Excel (un onglet qui sert de modèle) pour un nouveau projet donné
    4. A la création, le nom du nouveau projet et de l'onglet est dynamiquement créé et est unique.
    5. Dans mon modèle contient divers Tableaux nommés et cellules nommées.

    Mon problème est que pour chaque onglet projet (copie de l'onglet modèle), le TCD et des graphs (KPI) sont générés lors de la création de la copie de l'onglet modèle pour garantir que les données et les graphiques se mettront bien à jour avec les données de l'onglet projet lui-même.

    Donc, ce que je n'arrive pas à faire c'est de contraindre la création d'un TCD à une cellule nommée (combination nom onglet/projet + "Origine TCD Toto" dans :
    TableDestination:="Feuil1!R3C2",

    Il me faudra aussi trouver une solution pour chaque paramètre : comme pour TableName:="Tableau croisé dynamique1"


    Auriez-vous une petite idée ou un moyen de contournement ?
    J'imagine que je vais rencontrer le même problème lors de la création de Graph (KPIs) à partir de ces TCD...

    Dans l'attente de vos réponses, je vous souhaite une très belle journée.
    Cdt
    Aero31

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Citation Envoyé par Aero31 Voir le message
    Donc, ce que je n'arrive pas à faire c'est de contraindre la création d'un TCD à une cellule nommée (combination nom onglet/projet + "Origine TCD Toto" dans :
    TableDestination:="Feuil1!R3C2"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "database", Version:=8).CreatePivotTable TableDestination:="NomOnglet!Origine TCD Toto", _
            TableName:="Tableau croisé dynamique1", DefaultVersion:=8
    Il faut bien entendu qu'une cellule nommée Origine TCD Toto existe dans l'onglet NomOnglet

    Il me faudra aussi trouver une solution pour chaque paramètre : comme pour TableName:="Tableau croisé dynamique1"
    Je ne comprends pas où tu bloques, tu peux remplacer "Tableau croisé dynamique1" par n'importe quel nom pour nommer ton TCD de la façon que tu souhaites

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 22
    Par défaut
    Hello mat955

    Super merci, je vais tester cela.
    Oui pour le "Tableau croisé dynamique1" en fait, si j'ai bien compris c'est le nom du TCD à la création en VBA.
    Mais j'aimerai être sûr que je puisse faire une génération automatique du nom en partant du nom de l'onglet que j'ai déclaré en Dim OngletNom as String et qui vient d’une fenêtre de saisie de l’utilisateur, avec une valeur commune pour chaque onglet qui comprend par exemple la chaine string "_Fabrication".

    Ce qui donnerait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "database", Version:=8).CreatePivotTable TableDestination:="NomOnglet!Origine TCD Toto", _
            TableName:="NomOnglet & _Fabrication", DefaultVersion:=8
    En vert ce qui est généré par le code lors de la création de l'onglet par copie et en rouge une chaine de caractère qui vient rajouter l'information qui correspond au TCD (chaque onglet aura 5 pou 6 TCD et des KPIs liés.

    Il me semble avoir déjà essayé la solution proposée mais ça plante le code.

    Je teste à nouveau et reviens vers vous.
    Merci
    Cordialement,
    Aero31

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Citation Envoyé par Aero31 Voir le message
    Oui pour le "Tableau croisé dynamique1" en fait, si j'ai bien compris c'est le nom du TCD à la création en VBA.
    C'est tout à fait ça !

    On peut le rendre dynamique en jouant avec des variables, du texte brut ou les deux.
    Ainsi, si on imagine que tu as le nom de ton onglet dans la variable NomOnglet, ça donnerait quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "database", Version:=8).CreatePivotTable TableDestination:=NomOnglet & "!Origine TCD Toto", _
            TableName:=NomOnglet & "_Fabrication", DefaultVersion:=8
    La différence, c'est qu'on s'affranchit des guillemets pour le nom de l'onglet qui est fourni par une variable.

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 22
    Par défaut
    Ha cool super mat955

    Bon je ne dois pas être loin alors ^^

    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
    '$$$$ Create "Insert Table" for dynamic table and future KPIs --------------------------------
    ProjectTabName = "Manuf_" & nom
    ActiveSheet.Unprotect
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$W$63:$AQ$66"), , xlYes).Name = _
        ProjectTabName
    Range(ProjectTabName).Select
    ActiveSheet.ListObjects(ProjectTabName).TableStyle = ""
     
    'Create "Pivot Table" for dynamic table and future KPIs --------------------------------
    'PivotTabDynTabName = "TABLE_" & ProjectTabName
    Range(ProjectTabName).Select
    '    ActiveWindow.SmallScroll Down:=-15
    ActiveSheet.Unprotect
    Application.CutCopyMode = False
    Application.CutCopyMode = False
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        ProjectTabName, Version:=8).CreatePivotTable TableDestination:= _
        ProjectTabName & "!Origin_PivotTab_Manuf", TableName:="TABLE_" & ProjectTabName & "_Manuf", DefaultVersion:=8
    Sheets(ProjectTabName).Select
    Cells(Origin_PivotTab_Manuf).Select
    Pour l'instant j'ai un code erreur d'exécution '5' Argument ou appel de procédure incorrect

    Une idée ?

    J'ai du rater quelque chose

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Je dirais que ça bug sur cette ligne-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$W$63:$AQ$66"), , xlYes).Name = _
        ProjectTabName
    On ne peut pas mettre ce style de référence (qui est réservé aux fonctionx Excel) dans un objet Range.
    Range("W63:AQ66") -> ça, oui, c'est autorisé.

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

Discussions similaires

  1. Vba pivot table erreur 5 version6 excel 2016
    Par Duns77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/11/2020, 22h03
  2. [XL-2016] [Pivot Table] Liste des champs filtrés incorrecte
    Par Lameth dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2016, 12h06
  3. Réponses: 0
    Dernier message: 05/01/2016, 09h40
  4. [Débutant] [MATLAB][Excel][Automation] Tableau croisé dynamique - Pivot table
    Par ydeseved dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/11/2013, 10h00
  5. [UML CLASSES TABLES] Passage des classes aux tables
    Par Trompette83 dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 05/08/2007, 17h53

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