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 :

Ajout de données dans un graphique sans sélectionner de plage [XL-2016]


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
    Chef de projet
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Transports

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Par défaut Ajout de données dans un graphique sans sélectionner de plage
    Bonjour à toutes et à tous,

    J’ai créé une macro, qui fonctionne parfaitement, et qui me permet de créer un graphique puis ajouter les courbes que je désire dedans.
    Jusque-là j’utilise la sélection de donnée via une plage, ainsi*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set Serie = ActiveChart. SeriesCollection. NewSeries
    With Serie
    	. Values = YPlage
    	. XValues = XPlage
    	. Name = CurveName
    	. AxisGroup = CurvesType(k)(2)
    End With
    Je fais ainsi, parce que mes données sont disponibles dans le fichier Excel. C’est pratique et rapide.

    Toutefois, je dois désormais faire de nouvelles courbes qui sont des interpolations de valeurs. J'arrive à calculer ces valeurs, et j'avais prévu comme possibilité d'écrire ces valeurs dans une colonne dédiée à ceci, puis d'utiliser la méthode ci-dessus pour créer la courbe dédiée.
    Toutefois, le temps d'écriture est assez long (on atteint presque la seconde), alors même que j'ai désactivé la mise à jour de l'écran via «*Application. Screenupdating = False*». Si je ne fais pas l'écriture et j'enregistre les valeurs calculées dans une variable, il n'y a pas ce ralentissement.

    Je voudrais donc savoir s'il y a moyen de passer de la méthode ci-dessus àcelle-ci-dessous directement issue de l'enregistreur de macro, donc en mettant les valeurs de mon calcul directement dans les valeurs des axes*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveChart. FullSeriesCollection(3). XValues = "={1000,1500,2000,2500}"
    ActiveChart. FullSeriesCollection(3). Values = "={0.02,0.02,0.02,0.03}"
    Ce code, je pense sans trop me tromper pouvoir le transformer aisni*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set Serie = ActiveChart. SeriesCollection. NewSeriesWith Serie
    	. Values = "={1000,1500,2000,2500}"
    	. XValues = "={0.02,0.02,0.02,0.03}"
    	. Name = CurveName
    	. AxisGroup = CurvesType(k)(2)
    End With
    Toutefois, il me reste les valeurs entre guillemets, je ne sais pas comment les compléter correctement. Je suis donc ouvert à vos connaissances pour continuer dans cette voie.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tu dois écrire les valeurs dans un tableau (array). Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim Tabl(2) As Double
      Tabl(0) = 1000
      Tabl(1) = 1500
      Tabl(2) = 2000
      ActiveChart.FullSeriesCollection(3).Values = Tabl

  3. #3
    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,

    Il est intéressant d'aller voir dans l'aide Microsoft quel type de données est attendu pour cette propriété.

    Renvoie ou définit un tableau de valeurs X pour une série de graphiques. La **** propriété propriétéx peut être définie sur une plage dans une feuille de calcul ou sur un tableau de valeurs
    Cela veut dire que tu as raison, on peut effectivement y mettre un tableau au lieu d'une plage de cellule.

    Quand à la réalisation, il suffit de déclarer une variable tableau, et de lui mettre les valeurs que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Tableau() as Double
     
    Tableau = Array(1000,1500,2000,2500)
    Ensuite tu utilises cette même variable dans ton code qui a l'air de fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set Serie = ActiveChart. SeriesCollection. NewSeries
    With Serie
    	. Values = YPlage
    	. XValues = Tableau
    	. Name = CurveName
    	. AxisGroup = CurvesType(k)(2)
    End With
    Je te laisse adapter le reste

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Transports

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Par défaut
    Merci à vous 2 pour votre réponse qui fonctionne parfaitement.

    En effet la documentation l'explique bien, j'aurai pu commencé par là.

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

Discussions similaires

  1. [XL-2010] Ajouter les données dans le graphique
    Par bullrot dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/08/2013, 09h33
  2. [XL-2010] Créer un graphique sans sélectionner de plage de cellules
    Par horemheb dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/03/2013, 19h58
  3. Réponses: 1
    Dernier message: 11/02/2010, 16h31
  4. Réponses: 4
    Dernier message: 14/05/2007, 10h50
  5. Réponses: 2
    Dernier message: 04/12/2005, 20h07

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