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 :

Créer un Graphique avec une plage dynamique


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Créer un Graphique avec une plage dynamique
    Bonjour,
    je voudrais avoir un Graphe reactualisé via une plage dynamiquement définit
    j'ai trouvé des infos mais cela concerne des series contenant une seule ligne ou une seule colonne (cf zip joint)
    je connais donc la technique de créer l'instruction DECALER dans un Nom de champ
    cette instruction permet de définir une Plage dynamiquement (avec NBVAL)

    cela marche bien jusque là,

    par contre une fois le Graphe initié avec une plage bidon, je veux
    réecrire l'instruction sur la serie de la meme fàçon que les exemples
    à savoir = Feuil!onglet.nom_de_la_plage

    mais un message apparait comme quoi on ne peut y mettre autre chose qu'une ligne ou une colonne...

    donc, je ne peux pas avoir de plage plus grande qu'une ligne ou une colonne dynamiquement ??!
    c'est la question que je pose ?

    je rappelle ce que j'ai déjà fait:
    on créé un Nom/définir = nom_de_la_plage
    un autre pour les abscisses éventuellement (là c'est une seule ligne), toujours d'une manière dynamique (par DECALER...)

    on génère un Graphe, dont on va modifier le paramétrage
    je n'arrive pas à lui faire admettre ma plage nom_de_la_plage

    avez vous une autre facon de faire (avec du VBA pur peut-être?)

    merci de votre aide


    voici mes instructions:
    nom_de_la_plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Ressource!$D$8;0;0;NBVAL(Ressource!$D:$D)-7;NBVAL(Ressource!$7:$7)-8)
    abcisse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Ressource!$D$5;0;0;1;NBVAL(Ressource!$5:$5)-8)
    Graphe:
    dans l'onglet Série: dans la zone Valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Feuil1!nom_de_la_plage
    message : Référence non valide. Les réfrences à des titres , valeurs et dimensions doit être une cellule, une ligne ou une colonne unique...

    à moins que je doive utiliser l'autre Onglet ?
    mais comment je mets mes abscisses ?

    je connais un peu BVA, mais utilise rarement un graphe !
    en plus ici je veux un Graphe dynamique comme dans ce tableau contenu
    dans une feuille Ressource, le premier 8 étant en cellule D8
    le jour débute en D5...(abcisse)
    lundi mardi Mercredi jeudi Vendredi

    8 5 7 8 8
    0 1
    0
    0 1
    0
    0
    0 1 1

    le but:
    avoir un graphe en batons de même tailles, avec la répartition dedans
    typiquement une saisie d'activités sur 8 heures,
    en lignes les activités, en colonne la journée, cela fait tjrs 8 heures...
    qu'on saississe ou pas les zeros serait un plus !
    abscisse les jours ou dates selon ce que je vais y mettre...

    j'espère que l' exemple rend mes propos plus clairs...
    on saisie les heures de plus en plus à droite, au jour le jour, (==> Graphe dynamique)
    merci
    Fichiers attachés Fichiers attachés

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut j'y suis presque en VBA...il manque juste une definition
    plus précisemment la méthode pour dire que c'est cette plage de donnée
    que je veux affecter à la source de données du Graphe est à améliorer
    voici mon Sub

    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
    Sub actualiserGraph()
    '
    ' actualiser Graph Macro
    ' Macro enregistrée le 03/10/2008 
     
    'voici l'instruction qui marche via l'enregistreur de macro, mais moi je ne veux pas du <Sheets("Ressource").Range("D9:P15")>, mais de 'l'objet' définit comme étant une plage de cellules...
    '    ActiveChart.SetSourceData Source:=Sheets("Ressource").Range("D9:P15"), _
     '       PlotBy:=xlRows
     
     
    ' définition d'un Nom 'plage' qui est définit une plage de cellules Dynamiquement
      ActiveWorkbook.Names.Add Name:="plage", RefersToR1C1:= _
            "=OFFSET(Ressource!R9C4,0,0,COUNTA(Ressource!R7C4:R100C4)-1,COUNTA(Ressource!R7)-3)"
     ' voilà j'ai une plage dynamique
      ' je vais sur mon graphe
            Sheets("GRAPH").Select
     
        ActiveSheet.ChartObjects("Graphique 3").Activate
        ActiveChart.ChartArea.Select
    ' j'essaie de lui faire prendre la plage de nom plage au lieu du range...
        ActiveChart.SetSourceData Source:=plage, _
            PlotBy:=xlRows
    ' et là çà ne marche pas: erreur 424 l'objet est mal écrit, mais je ne connait pas comment bien l'écrire...c'est là le pb pour moi
    ' la suite...ok
        ActiveWindow.Visible = False
        Windows("dossier.xls").Activate
        Range("A1").Select
    End Sub

    Merci à vous
    PS: c'est une fonctionnalité très sympa ces plages dynamiques...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut je m'excuse j'ai utilisé le terme de tableau croisé dynamique, cela n'a rien à voir !
    c'est sur un Graphique de données que je travaille !!!

    encore une fois excusez moi d'avoir confondu tout cela...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Yes, j'ai trouvé la boone façon de mettre ce champ dynamique dans le graph
    il faut passer par refersto

    ActiveChart.SetSourceData Source:=Sheets("Ressource").Range(Names("nom_de_plage").RefersTo), PlotBy:=xlRows

    je rappelle que j'avais créé un Nom pour définir une plage dynamique
    par exemple ici
    nom_de_plage
    =DECALER(Ressource!$D$8;0;0;NBVAL(Ressource!$D:$D)-7;NBVAL(Ressource!$7:$7)-8)

    représente un tableau de cellule (dynamique dans le temps) de 7 colonnes et 15 lignes à un instant t...

    le but est atteint
    merci aux lecteurs

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

Discussions similaires

  1. Créer un graph avec une plage de donnée variable
    Par Damien.020 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/04/2010, 09h04
  2. Créer un graphique avec des données dynamiques
    Par nikobell dans le forum Excel
    Réponses: 5
    Dernier message: 17/01/2010, 19h39
  3. Réponses: 1
    Dernier message: 28/01/2009, 09h01
  4. Creation graphique avec une plage de données
    Par mat-tech dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/06/2008, 13h55
  5. Créer un graph avec une plage de donnée variable
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/06/2007, 17h15

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