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 :

Problème au niveau de la source d'un graphique (lié à un TCD) [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut Problème au niveau de la source d'un graphique (lié à un TCD)
    Bonjour,

    J'aimerai faire afficher un graphique lors de l'apparition d'un TCD sur un sheet.

    En gros il faudrait que le graphique soit relié aux données du TCD, du coup j'ai fait un code permettant de prendre les données de ma BDD et de créé un TCD, jusque là, pas trop de souci, mais à l'affichage du TCD, le graphique est "VIERGE", il n'y a pas de données à l'intérieur...

    J'ai essayé a plusieurs reprises de rentrer des données dans le SourceData de mon graphique sans succés, une idée sur ce problème ?

    Mon code : (la partie en bleu à revoir donc...)
    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
    Private Sub CommandButton2_Click() 'Bouton Graphique Croisé Dynamique
    If Workbooks("Extraction").Sheets("BDD").Range("A1").Value = "" Then
    MsgBox "Merci d'effectuer une extraction afin de pouvoir analyser des données.", vbCritical
    Else
    On Error Resume Next
    Sheets("GCD").Activate
    
    'Suppression des GCD et TCD Précédents
    Sheets("GCD").Rows("6:1048000").Delete Shift:=xlUp
    Sheets("GCD").Range("A6:ZZ1048000").ClearContents
    
    'pour la dernière ligne de la BDD :
    derlig = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row
    
    'pour la dernière colonne de la BDD :
    dercol = Sheets("BDD").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    LetCol = Split(Cells(1, dercol).Address, "$")(1)
    
    'Création TCD et GCD avec mise en forme :
    
        Range("A1:" & LetCol & derlig).Select
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "BDD!R1C1:R" & derlig & "C" & dercol, Version:=xlPivotTableVersion15).CreatePivotTable _
            TableDestination:="GCD!R10C1", TableName:="Tableau croisé dynamique1", _
            DefaultVersion:=xlPivotTableVersion15
        Sheets("GCD").Select
    
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Recette" _
            )
            .Orientation = xlRowField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("Conformité Densité"), _
            "Somme de Conformité Densité", xlSum
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Conformité Densité")
            .Orientation = xlPageField
            .Position = 1
        End With
        
        'Ajout d'un graphique
        Sheets("GCD").Activate
    '    'pour la dernière ligne de la GCD :
    '    derlig1 = Sheets("GCD").Range("A" & Rows.Count).End(xlUp).Row - 1
    '    'pour la dernière colonne de la GCD :
    '    dercol1 = Sheets("GCD").Cells(11, Cells.Columns.Count).End(xlToLeft).Column
    '    LetCol1 = Split(Cells(1, dercol1).Address, "$")(1)
    
            ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
            ActiveChart.Parent.Name = "Graphique"
            'x = "GCD!A8"
            x = "[Extraction.xlsb]GCD!Tableau croisé dynamique1"
            ActiveChart.SetSourceData Source:=x
    
    End If
    End Sub
    Merci d'avance.

    Cordialement.

    GK

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    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 587
    Par défaut
    Bonjour

    Je n'ai pas détaillé ton code mais à partir d'un TCD on fait un GCD et il est automatiquement alimenté par les données et la structure du TCD.

    Il est plus logique de supprimer les TCD, GCD que les cellules.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    Ta remarque est pertinente, j'ai adapté mon code afin de supprimer TCD et GCD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("GCD").PivotTables("Tableau croisé dynamique1").Delete
    Sheets("GCD").ChartObjects("Graphique").Delete
    Cependant, je n'arrive pas à supprimer le TCD avec cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("GCD").PivotTables("Tableau croisé dynamique1").Delete
    Pour faire ce code (plus haut), j'ai utilisé l'enregistreur de macro, et l'enregistreur créer bien un TCD et un GCD à part... D'où ce code ...

    Je continue de chercher...

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    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 587
    Par défaut
    Re

    Il faut supprimer les GCD avant les TCD dont ils dépendent car sinon Excel les transforme en graphique classique basé sur les dernières valeurs connues.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    J'ai fais ça avec le pas à pas VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("GCD").ChartObjects("Graphique").Delete
    Sheets("GCD").PivotTables("Tableau croisé dynamique1").Delete
    Je remarque que cela supprime bien le graphique mais pas le TCD.

    La seule chose qui supprime le TCD c'est ce code : (mode débrouille)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("GCD").Rows("6:1048000").Delete Shift:=xlUp
    Autre chose, ma question portait sur la source du graphique, pour le TCD et GCD, je les supprime avant leur création via un bouton.
    Ma difficulté est sur le code suivant (avec la ligne en bleu, car mon graphique n'affiche aucune valeur...en fait il ne reconnait pas le TCD je pense...):
    (Mon graphique doit pointer sur le TCD normalement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        'Ajout d'un graphique
        Sheets("GCD").Activate
        'pour la dernière ligne de la GCD :
        derlig1 = Sheets("GCD").Range("A" & Rows.Count).End(xlUp).Row - 1
        'pour la dernière colonne de la GCD :
        dercol1 = Sheets("GCD").Cells(11, Cells.Columns.Count).End(xlToLeft).Column
        LetCol1 = Split(Cells(1, dercol1).Address, "$")(1)
    
            ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
            ActiveChart.Parent.Name = "Graphique"
            x = Range("GCD!A11")
            'x = "[Extraction.xlsb]GCD!Tableau croisé dynamique1"
            'x = Range("A11").Value
            ActiveSheet.ChartObjects("Graphique").SetSourceData Source:=x

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Par défaut
    Je pointais sur la mauvaise feuille, j'ai vu ça avec le mode pas à pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        'Ajout d'un graphique
        Sheets("GCD").Activate
        'pour la dernière ligne de la GCD :
        derlig1 = Sheets("GCD").Range("A" & Rows.Count).End(xlUp).Row - 1
        'pour la dernière colonne de la GCD :
        dercol1 = Sheets("GCD").Cells(11, Cells.Columns.Count).End(xlToLeft).Column
        Letcol1 = Split(Cells(1, dercol1).Address, "$")(1)
    
            ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
            ActiveChart.SetSourceData Source:=Sheets("GCD").Range("A11:" & Letcol1 & derlig1)        
            ActiveChart.Parent.Name = "Graphique 1"
    Merci de votre aide !!!!

    GK

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

Discussions similaires

  1. [UBUNTU] Problème au niveau du partitionnement
    Par Louis-Guillaume Morand dans le forum Ubuntu
    Réponses: 19
    Dernier message: 19/07/2006, 19h05
  2. [CSS] Problème au niveau de la résolution
    Par shukin dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/10/2005, 14h29
  3. [PPC][C#][SQL2000] Problème au niveau de donné controlé
    Par Roach dans le forum Windows Forms
    Réponses: 16
    Dernier message: 21/09/2005, 23h08
  4. problème au niveau de restore database
    Par Redouane dans le forum Administration
    Réponses: 2
    Dernier message: 07/09/2005, 12h49
  5. [DNS MX]Avec DynDNS.org, problème au niveau du MX
    Par Swoög dans le forum Développement
    Réponses: 9
    Dernier message: 24/08/2004, 23h00

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