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 :

[VBA-E] Données source d'un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut [VBA-E] Données source d'un graphique
    Hello,

    j'ai un petit souci pour la selection de données source d'un graphique

    voici le code donné par l'editeur de macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'ActiveChart.SetSourceData Source:=Sheets("Données_APCIOPE1").Range( _
            "A6:A9,F6:F9"), PlotBy:=xlColumns
    C'est un peu compliqué car j'ai plusieurs graphs. le premier prend de A6:A9,B6:B9 le second A6:A9,C6:C9 etc...

    donc je décale d'une colonne à chaque fois. En plus de ca je veux choisir le nombre de lignes que je prend (donc pas toujours jusque ligne 9). j'ai tenté de traduire le code donné par l'editeur et ca donne le code ci dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'on parcourt tous les graphs et on les met à jour
    For i = 1 To Charts.Count
        Charts(i).Select
        'faire un range de range?
     
            ActiveChart.SetSourceData Source:=Sheets(1).Range(Range(Sheets(1).Cells(7, 1), _
        Sheets(1).Cells(DerniereLigne, 1)), Range(Sheets(1).Cells(7, i + 1), _
        Sheets(1).Cells(DerniereLigne, i + 1))), PlotBy:=xlColumns
     
    Next
    Or le probleme ici est que pour mon graph2 il me prend la plage de A6:C9 (j'ai donc 2 courbes) puis pour le graph3 il me prend A6: D9 (donc 3 courbes etc...)

    moi je voudrai qu'il me prenne A6:A9 en abscisse et C6:C9 en ordonnées pour le graph2 (qu'il ne prenne pas la colonne B)

    une idée?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello l'ersatz, toujours pas foutu à la porte ?
    Regarde là, j'espère que tu trouveras ton bonheur
    http://www.developpez.net/forums/sho...d.php?t=179577
    Tu dis

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Pfff vilain dodo !

    non toujours pas à la porte, comme si !!

    bon j'ai regardé ton exemple mais ca correspond pas à mon cas, ou alors j'ai mal compris.

    en fait ton cas tu prend une plage de plusieur cellules bougeante. Moi c'est un peu le meme mais y'a un "trou" dans la plage.

    Je prend toujours la colonne A mais apres je prend QUE la B pour graph1 (donc données de colonnes A et B), QUE la C pour graph2 (donc données de colonnes A et C)....

    et moi avec mon code j'arrive pas à prendre A et C il me prend A à C (donc la colonne B aussi et moi j'en veux pas !!)


    voilà c'est pas simple à expliquer désolé

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Dis-moi déjà si c'est un truc de ce genre-là que tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("A6:A10,D6:D10,E6:E10")

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    hmmmm,

    espece de *%$! de dodo !!

    tu aimes me faire languir hein?!

    j'ai la solution !!! mais attend un peu...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    oui c'est ca

    .Range("A6:A9,F6:F9"),


    moi ya que 2 plage différentes mais c'est ca l'idée !

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors tu fabriques ta plage .Range("A6:A9,F6:F9"),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            NoCol1 = 1
            NoLigne1 = 6
            NoCol2 = 1
            NoLigne2 = 9
            Plage = Range(Cells(NoLigne1,NoCol1),Cells(NoLigne2,NoCol2)).address
            NoCol1 = 1
            NoLigne1 = 6
            NoCol2 = 6
            NoLigne2 = 9
            Plage = Plage + "," + Range(Cells(NoLigne1,NoCol1),Cells(NoLigne2,NoCol2)).address
    Et ensuite, tu peux mettre ".Range(Plage), "
    Maintenant, si tes colonnes ne changernt pas, tu peux simplement mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            NoLigne1 = 6
            NoLigne2 = 9
            Plage = Range(Cells(NoLigne1,1),Cells(NoLigne2,1)).address
            NoLigne1 = 6
            NoLigne2 = 9
            Plage = Plage + "," + Range(Cells(NoLigne1,6),Cells(NoLigne2,6)).address
    A toi !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Recoucou,


    alors si j'ai bien compris voilà le code que je dois mettre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     NoCol1 = 1
        NoLigne1 = 6
        NoCol2 = 1
        NoLigne2 = DerniereLigne
        plage = Range(Cells(NoLigne1, NoCol1), Cells(NoLigne2, NoCol2)).Address
        NoCol1 = i + 1
        NoLigne1 = 6
        NoCol2 = i + 1
        NoLigne2 = DerniereLigne
        plage = plage + "," + Range(Cells(NoLigne1, NoCol1), Cells(NoLigne2, NoCol2)).Address
        ActiveChart.SetSourceData Source:=Sheets(1).plage, PlotBy:=xlColumns
    par contre j'ai une erreur (à la ligne en rouge):

    la methode "cells" de l'objet '_global' à échouée

    sinon... apres je l'utilise comment "plage" ?

    comme ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SetSourceData Source:=Sheets(1).plage, PlotBy:=xlColumns

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Vérifie ce que tu as dans dernièreLigne parce que de mon côté je n'ai pas d'erreur (testé)
    Ensuite, pour l'utilisation, tu m'as donné une syntaxe, ".Range("A6:A9,F6:F9"),

    Comme tu ne sais toujours pas lire, je répète
    Et ensuite, tu peux mettre ".Range(Plage), "
    Hihi !

    Edit
    Regarde ce qu'il y a dans Plage, tu comprendras mieux (faut tout y dire sans ça y comprend rien )

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Bon apres environ 45 sec de reflexion j'ai trouvé

    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 MAJ_GRAPH(ByRef DerniereLigne As Long)
     
    'on parcourt tous les graphs et on les met à jour
    For i = 1 To Charts.Count
     
        Charts(i).Select
        NoCol1 = 1
        NoLigne1 = 6
        NoCol2 = 1
        NoLigne2 = DerniereLigne
        Debug.Print DerniereLigne
        plage = Sheets(1).Range(Cells(NoLigne1, NoCol1), Cells(NoLigne2, NoCol2)).Address
        NoCol1 = i + 1
        NoLigne1 = 6
        NoCol2 = i + 1
        NoLigne2 = DerniereLigne
        plage = plage + "," + Sheets(1).Range(Cells(NoLigne1, NoCol1), Cells(NoLigne2, NoCol2)).Address
        ActiveChart.SetSourceData Source:=Sheets(1).Range(plage), PlotBy:=xlColumns
     
    Next
     
    End Sub
    c'est parceque je selectionnai un graph donc probleme pour la selection de la plage.

    j'ai donc changé ca et là j'ai plus d'erreur, par contre c'est assez hm.. bizarre mes graphs il doit pas prendre les bonnes données donc jvais trifouiller ca =)

    jmettrai resolu quand ca ira !

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    bon bah erreur de ma part en fait...

    ca va bien j'ai reussi à résoudre mon probleme tout seul comme un grand !!

    voilà jvais quand meme te dire merci allez soyons fou

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Y'en a qui manquent pas d'air sur ce forum. Je te leur en foutrais des "J'ai résolu mon problème tout seul !"
    Quand je dis que l'Elstak, là, il sait pas lire

    J'ai verrouillé pour que le sus-nommé, qui n'a rien à dire, ne dise rien !

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

Discussions similaires

  1. Modifier donnée sources d'un graphique
    Par rob1son76 dans le forum IHM
    Réponses: 1
    Dernier message: 14/12/2010, 15h32
  2. Réponses: 2
    Dernier message: 12/01/2009, 09h39
  3. récuperer l'adresse des données sources d'un Graphique
    Par gratesnif dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2008, 16h06
  4. [vba-E]données sources d'une combobox variables
    Par sk8bcn dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/08/2006, 14h49
  5. [VBA-E] Données sources d'un graphique
    Par kawel dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/08/2006, 05h10

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