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 :

TCD-Ajout d'un champ-VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Analyste Supply Chain
    Inscrit en
    Mai 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Supply Chain

    Informations forums :
    Inscription : Mai 2015
    Messages : 41
    Points : 31
    Points
    31
    Par défaut TCD-Ajout d'un champ-VBA
    Bonjour à tous,

    C'est mon premier message (guidé par l'urgence ^^), je me présenterai dans le topic approprié plus tard.

    Je sollicite votre aide pour une question bête mais pour laquelle je ne trouve pas de réponse (je suis novice en VBA). Je souhaiterais ajouter une formule dans mon TCD, qui ferait intervenir la valeur d'une cellule "extérieure" (partie en gras dans le code ci-dessous). Je vous montre le code pour que puissiez mieux comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveSheet.PivotTables("Mon TCD").CalculatedFields.Add "StructDiff 2013", _
            "='2013.Total Demand' * Sheets("Menu").Cells(4, 9).Value", True
            ActiveSheet.PivotTables("Mon TCD").PivotFields("StructDiff 2013").Orientation = _
            xlDataField
    Evidemment, le code ne marche pas, et je n'arrive pas à trouver la solution.

    Merci d'avance pour votre aide !

    Tom55555

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Difficile de faire une réponse précise. Je vous suggère cependant:

    - de remplacer 'ActiveSheet' par Sheet("XXXX"), si des fois la feuille active n'était pas celle contenant le TCD "Mon TCD"
    - d'exécuter le code en pas à pas pour indiquer où ça plante et le message d'erreur....

    Ceci étant, je ne vois pas où est .... la formule, essayez avec l'enregistreur de Macro?

    Bonne continuation
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Analyste Supply Chain
    Inscrit en
    Mai 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Supply Chain

    Informations forums :
    Inscription : Mai 2015
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Merci de ton aide.

    Lorsque j'exécute pas à pas, l'erreur repéré se situe au niveau de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.PivotTables("Mon TCD").CalculatedFields.Add "StructDiff 2013", _
            "='2013.Total Demand'" * Sheets("Menu").Cells(4, 9).Value, True
    Il est alors écrit "incompatibilité de type". Je pense que c'est une erreur syntaxique. Le "Sheets("Menu").Cells(4, 9).Value" n'est peut être pas imbriqué comme il faut. :/

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Pour moi, il manque .... la formule
    Cf https://msdn.microsoft.com/fr-fr/lib.../ff834479.aspx

    Comme suggéré, faites le en mode enregistrement Macro pour vérifier au préalable
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Analyste Supply Chain
    Inscrit en
    Mai 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Supply Chain

    Informations forums :
    Inscription : Mai 2015
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Je ne comprends pas ce que tu veux dire. La syntaxe me semble être respecté, j'ai également vérifié avec l'enregistreur de macro, mais rien n'y fait, ça ne fonctionne pas.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    et ben ... un bout d'exemple serait le bienvenu
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Analyste Supply Chain
    Inscrit en
    Mai 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Supply Chain

    Informations forums :
    Inscription : Mai 2015
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    J'ai mis en pièce-jointe un petit aperçu de ce que je souhaiterais faire.
    En gros, j'aimerais faire en sorte que lorsque je lance mon TCD, il ajoute un champ qui multiplie le nombre de voiture par le coefficient inscrit dans la page des "données".

    J'ai déjà développé une macro qui créé un TCD, mais l'étape de créer un champ multiplié par un nombre hors de la source, je n'y arrive pas.

    Merci encore pour ton aide !
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Voir code suivant, à retoucher si besoin (testé partiellement)

    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
     
    Sub Test_TCDCalc()
     
    Dim PivTab As PivotTable
    Dim PivCalcFld As PivotField, PivCalcFldN As String
    Dim PivCalConst As Single
     
    'Init
        Set PivTab = ThisWorkbook.Worksheets("PV_SUM").PivotTables("Tableau croisé dynamique2")
     
        PivCalcFldN = "VincCalc"
        PivCalConst = ThisWorkbook.Worksheets(1).Range("J2").Value
     
        Set PivCalcFld = PivTab.PivotFields(PivCalcFldN)
     
    'On teste si le champ existe déjà ou non
        On Error Resume Next
     
        If IsObject(PivTab.PivotFields(PivCalcFldN)) Then
     
            Debug.Print PivTab.PivotFields(PivCalcFldN).Name
            PivTab.PivotFields(PivCalcFldN).StandardFormula = "=Nombre*" & PivCalConst
     
            Else:   'Le champ n'existe pas
                PivTab.CalculatedFields.Add PivCalcFldN, "=Nombre*" & PivCalConst, True
                PivTab.AddDataField PivTab.PivotFields(PivCalcFldN), PivCalcFldN, xlSum
     
        End If
     
     
        For Each PivCalcFld In PivTab.CalculatedFields
            Debug.Print PivCalcFld.Name, IsObject(PivCalcFld), PivCalcFld.StandardFormula
        Next PivCalcFld
     
    End Sub
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

Discussions similaires

  1. TCD - ajout de formule à partir de champ cumulé
    Par Tom55555 dans le forum Excel
    Réponses: 7
    Dernier message: 22/05/2015, 09h08
  2. VBA TCD Utilisation du même champ pour plusieurs zones
    Par Frululu dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/10/2013, 10h57
  3. [XL-2007] [TCD] Ajouter un champ dans la zone valeur
    Par jey1319 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2012, 11h10
  4. Réponses: 1
    Dernier message: 07/03/2012, 17h31
  5. [VBA-E] GCD-TCD : Comment conserver les champs de données
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2007, 09h52

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