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 :

Graphique dynamique par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Graphique dynamique par macro
    Bonjour,

    Je suis tout jeune développeur en vba et j'ai besoin d'un peu d'aide. Par contre, je peux pas fournir maintenant le code sur lequel je travaille, puisque je développe sur le PC de mon lieu de mon stage et j'ai pas pensé à copier mon travail... (what a looser ;-))

    J'ai un graphe dynamique à faire. Pour ça, je définis un champs de données à partir d'une celulle que je "resize" à partir d'une variable. ça marche bien : les champs sélectionnés sont ceux qu'il faut au bon moment.

    Or, je veux construire un graphique à partir de ces données. Et là, pas moyen de m'en sortir ... J'utilise (de tête...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveChart.SeriesCollection(1).XValues ="="Donnees1"
    ActiveChart.SeriesCollection(1).Values ="="Donnees2"
    ActiveChart.SeriesCollection(2).Values ="="Donnees3"
    Et là, pas moyen ...

    Merci si vous avez des idées

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut complément : code graphique dynamique
    Bonjour,

    Je précise le message précédent. Ci-joint le code concerné.

    Les données sélectionnées sont les bonnes. J'ai aussi essayer de paramétrer des cellules à la place des champs, sans succès ...

    Un grand merci d'avance à ceux qui pourront m'aider ...

    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
     
    Range("Date_0").Select
    Set DonneesSelect2 = Range("Date_0").Offset(case_vide2 + 1, 0)
    DonneesSelect2.Resize(DonneesSelect2.Rows.Count + Compteur2 - case_vide2 - 1).Name = "Donnees2"
     
     
    Range("Evo_Part_2011").Select
    Set DonneesSelect3 = Range("Evo_Part_2011").Offset(case_vide2 + 1, 0)
    DonneesSelect3.Resize(DonneesSelect3.Rows.Count + Compteur2 - case_vide2 - 1).Name = "Donnees3"
     
    Range("Evo_Part_100_2011").Select
    Set DonneesSelect4 = Range("Evo_Part_100_2011").Offset(case_vide2 + 1, 0)
    DonneesSelect4.Resize(DonneesSelect4.Rows.Count + Compteur2 - case_vide2 - 1).Name = "Donnees4"
     
     
     
     
    Sheets("Etat").Select
    ActiveSheet.ChartObjects("Graphique 1").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection(1).XValues = "=Donnees2"
    ActiveChart.SeriesCollection(1).Values = "=Donnees3"
    ActiveChart.SeriesCollection(2).Values = "=Donnees4"

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Bonjour,

    A quoi correspondent Date_0, Evo_Part_2011 etc. ? Est-ce que ce sont des variables ? Si oui, comment sont-elles définies ?

    En général, on écrit lorsqu'on veut sélectionner la case A1. Si ce sont des variables représentant une plage de données, il faut écrire De plus, tu n'es pas obligé de faire un Select dessus. La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DonneesSelect2 = Range("Date_0").Offset(case_vide2 + 1, 0)
    suffit pour dire que tu travailles sur Date_0. Tu peux donc enlever tous tes Select. Ca n'en sera que plus clair et rapide.

    Enfin, tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).XValues = "=Donnees2"
    Je ne sais pas vraiment si la syntaxe est correcte ne sachant ce qui est représenté. Tu devrais tenté un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).XValues = "Donnees2"
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).XValues = Donnees2
    si Donnes2 est une variable.

    Tu testes pour moi ces changements ?
    DeaD

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse.

    Alors, les noms tels que Date0, Evo_Part_2011 ont été défini dans le champs en haut à gauche du tableur qui permet traditionnellement de lire les cellules. (A4 ...)

    J'ai tenté tes modifications : si je lui donne Range(Date0) sans "", il me renvoie une erreur, si je lui donne (pour le graphique) "Donnees2", il voit cela comme une variable texte et nomme un de mes axes Donnees2.
    Enfin, en écrivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).XValues = Donnees2
    : pas d'erreur, mais les données sources du graphe sont nuls ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bon, j'ai finalement un moyen de procéder (sans passer par du code vb)

    Je définis des colonnes de manière dynamique en utilisatn insérer, nom, définir et je nomme mes champs DECALER(case_de_départ; offset sur les rows; offset sur les colonnes; NBVAL(colonne sur laquelle on compte) - nombre de case à ne pas compter

    NBVAL compte le nombre de celulles non vides dans la colonne (d'où le fait d'enlever certaines cases comme le nom du champs). En paramètrant offset sur rows et offset sur colonnes, on peut faire à peu près tout ce qu'on veut.

    Après, reste plus qu'à définir un nom à cet offset, qu'on reprendra dans les données sources de notre graphe.

Discussions similaires

  1. Tableau croisé dynamique par Macro
    Par elraph1802 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/09/2014, 15h53
  2. [Toutes versions] Résultat de tableau croisé dynamique par macro
    Par tools dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/08/2012, 18h05
  3. Réponses: 1
    Dernier message: 02/09/2006, 11h02
  4. [VBA-E]actualisation d'un tableau dynamique par macro
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/04/2006, 16h37

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