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 :

Sélectionner les données de mon graphique [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    juillet 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2020
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Sélectionner les données de mon graphique
    Bonjour,

    Pour extraire et analyser mes données, j'ai dû faire un TDC. Cependant, comme le TDC n'était pas suffisant pour analyser correctement mes données, j'ai du faire un tableau (qu'on appelera Tab1), à côté de mon TDC, pour une meilleure analyse. Le problème est que lorsque je met à jour mon TDC, mon Tab1 ne se met pas à jour automatique : il fallait que je tire manuellement les lignes vers le bas. J'ai donc fais un petit codage VBA pour que le tirage des lignes se fasse tout seul.
    Maintenant que les données de mon Tab1 sont à jour, il faut aussi que je mette à jour mon graphique. Et c'est à ce niveau que je bloque. Je n'arrive pas à changer la sélection de mon tableau. Il faut que je le fasse manuellement, et j'aimerai pouvoir l'automatiser avec du VBA.

    J'espère que j'ai été clair et si vous avez des suggestions, je suis preneur

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    16 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 16 034
    Points : 32 858
    Points
    32 858
    Par défaut
    Dans l'objet Chart référençant ton graphique, il faut modifier les propriétés de SeriesCollection, en particulier XValues et Values ou bien directement de Formula.

    Lire ça :
    https://docs.microsoft.com/fr-fr/off....chart(object)
    https://docs.microsoft.com/fr-fr/off...riescollection
    https://docs.microsoft.com/fr-fr/off...series(object)
    https://docs.microsoft.com/fr-fr/off...series.formula
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    juillet 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2020
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    J'ai bien pris connaissance de ce que tu m'as envoyé, et j'ai pu faire ce petit programme :

    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
    Sub Selection_donnees_graphes()
    '
    ' Selection_donnees_graphes Macro
    '
    Dim LastRw As Long, i As Integer, feuille
    feuille = Array("1", "2")
    For i = LBound(feuille) To UBound(feuille)
     
        LastRw = Sheets(feuille(i)).Cells(Rows.Count, 3).End(xlUp).Row
     
     
        ActiveSheet.ChartObjects("Graphique 4").Activate
     
        ActiveChart.FullSeriesCollection(1).Values = Range("H6:H" & LastRw)
        ActiveChart.FullSeriesCollection(2).Values = Range("I6:I" & LastRw)
        ActiveChart.FullSeriesCollection(3).Values = Range("J6:J" & LastRw)
        ActiveChart.FullSeriesCollection(4).Values = Range("K6:K" & LastRw)
        ActiveChart.FullSeriesCollection(4).XValues = Range("E6:F" & LastRw)
     
    Next i
     
    End Sub
    Cependant, lorsque je rajoute des lignes à mon Tab1, la maccro ne sélectionne pas toutes les nouvelles données et je n'ai donc pas d'évolution dans mon graphe...
    Est-ce que tu vois d'où vient mon erreur ?

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    16 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 16 034
    Points : 32 858
    Points
    32 858
    Par défaut
    Je suppose qu'il n'est pas normal qu'il n'y ait pas de relation entre la variable i d'itération de ton For To et ActiveSheet.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    juillet 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2020
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    J'ai légèrement modifié le programme, et ça fonctionne légèrement mieux. Cependant, j'ai encore un soucis avec ma dernière ligne... Il s'agit de l'axe des abscisses, et j'ai besoin de sélectionner 2 colonnes pour faire apparaitre le nom du produit, ainsi que la semaine de fabrication. Mais avec mon programme rien ne bouge dans la sélection de la plage de donnée alors que pour le reste, tout est bon...

    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
    Sub Selection_donnees_graphes2()
    '
    ' Selection_donnees_graphes Macro
    '
    Dim LastRw As Long, i As Integer, feuille
    feuille = Array("SPC_CMSC1691", "SPC_CMSC1761")
     
        LastRw = Sheets(feuille(i)).Cells(Rows.Count, 3).End(xlUp).Row - 1
        ActiveSheet.ChartObjects("Graphique 4").Activate
        ActiveChart.SeriesCollection(1).Values = Sheets(feuille(i)).Range("$H$6:$H$" & LastRw)
        ActiveChart.SeriesCollection(2).Values = Sheets(feuille(i)).Range("$I$6:$I$" & LastRw)
        ActiveChart.SeriesCollection(3).Values = Sheets(feuille(i)).Range("$J$6:$J$" & LastRw)
        ActiveChart.SeriesCollection(4).Values = Sheets(feuille(i)).Range("$K$6:$K$" & LastRw)
        ActiveChart.SeriesCollection(4).XValues = Sheets(feuille(i)).Range("$E$6:$F$" & LastRw)
     
    End Sub
    Je débute avec VBA, donc j'ai encore du mal à identifier mes erreurs ^^

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    16 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 16 034
    Points : 32 858
    Points
    32 858
    Par défaut
    Citation Envoyé par Le ptit nouveau Voir le message
    Mais avec mon programme rien ne bouge dans la sélection de la plage de donnée alors que pour le reste, tout est bon...
    Je le répète : dans ta boucle, tu utilises ActiveSheet mais nulle part tu n'indiques que la feuille active est celle qui correspond à la feuille d'indice i de ta matrice feuille.

    De toute façon, d'une manière générale, je te conseille d'éviter les Activate et les Select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = LBound(feuille) To UBound(feuille)
     
        LastRw = Sheets(feuille(i)).Cells(Rows.Count, 3).End(xlUp).Row
        Set MonGraph = Sheets(feuille(i)).ChartObjects("Graphique 4")
     
        MonGraph.FullSeriesCollection(1).Values = Range("H6:H" & LastRw)
        ... etc ...
    Es-tu sûr que ton graph se nomme "Graphique 4" dans chaque feuille ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    juillet 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2020
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    oui oui j'ai bien fais attention aux noms de mes graphiques.
    Et tu as raison, le fait d'enlever le Activate, ça fonctionne mieux !!

    Merci pour ton aide et bonne journée

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    16 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 16 034
    Points : 32 858
    Points
    32 858
    Par défaut
    Il y avait une erreur dans mon code : j'avais oublié un Set.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. [AJAX] N'importe qui peut voir les données de mon fichier XML
    Par KoosMos dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 30/11/2007, 12h48
  2. Réponses: 4
    Dernier message: 07/09/2007, 18h47
  3. Réponses: 6
    Dernier message: 06/06/2006, 12h46
  4. Comment sélectionner les données non dupliquées
    Par Dnx dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/10/2005, 12h43

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