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 Excel Débutant : Graphique et objet Range


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 179
    Par défaut VBA Excel Débutant : Graphique et objet Range
    Bonjour, voici mon problème :

    je dispose d'une Feuil1 dans laquelle les colonnes A, B, C, D, E et F sont remplies.

    Je souhaite réaliser plusieurs graphiques :
    1er graphique :
    - abscisse = colonne B
    - ordonnée = colonne c

    2ème graphique :
    - abscisse = colonne B
    - ordonnée = colonne C

    3ème graphique :
    -abscisse = colonne B
    - ordonnée = colonne D

    etc...

    J'ai commencé à écrire mon code :

    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
     
     
    Pour i de C à F 'cela fonctionne
     
    Set Graph = Charts.Add
     
    With Graph
     
    .SetSourceDateSource :=Sheets("Feuil1").Range(toto), PlotBy :=xlColumns
     
    'les autres paramètres du graphiques sont ok
     
    End With
     
    Fin Pour
    Mais je ne vois pas comment indiquer les références des plages toto à excel sachant que pour chacune des colonnes, je dispose d'une variable dernièreligne qui détermine la dernière ligne utilisée de la colonne.

    Je pensais utiliser qqch comme Cells(B, dernièreligne), Cells(i, dernièreligne) mais je ne vois pas comment l'insérer dans un objet range ?

    Si qqn pouvait m'éclairer ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    En fait, Range se définit en donnant les coordonnées des 2 coins opposés. Donc tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range(Cells(1,5),Cells(DerniereLigne,5))
    pour 'parler' des cellules de la colonne E, par exemple.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 179
    Par défaut
    Bonjour Megaxel,

    je viens d'essayer ton code mais je n'arrive pas à le faire fonctionner.

    Voilà ce que j'ai saisi :

    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
    Sub CréationGraphique()
     
    Dim Graph As Chart
     
    dernierecolonne = Worksheets("Feuil1").Range("D2").End(xlToRight).Column - 3
     
    'Pour chacune des colonnes de composés jusqu'à la dernière colonne remplie
    For i = 4 To dernierecolonne + 3
     
    Derniereligne = Worksheets("Feuil1").Cells(5, i).End(xlDown).Row
    Set Graph = Charts.Add
     
    With Graph
        .Name = Worksheets("Feuil1").Cells(2, i).Value
        .ChartType = xlXYScatterLinesNoMarkers
        .SetSourceData Source:=Sheets("Feuil1").Range(Cells(5, 2), Cells(Derniereligne, i)), PlotBy:=xlColumns
        .HasTitle = True
        .ChartTitle.Text = Worksheets("Feuil1").Cells(2, i).Value
     
    End With
     
    Next
     
    End Sub
    Qui plus est, je suis en train de penser que l'utilisation de la dernieligne ne peut pas être utilisée dans mon cas contrairement à ce que je pensais.

    En effet, dans certains cas, mes colonnes C ou D... ne comprennent pas de valeurs (autrement dit, aux heures définies dans B ne correspondent aucun résultat) : ce que le graphique doit représenter par une courbe brisée.

    Or, l'utilisation de la variable derniereligne me permet de déterminer la dernière ligne du tableau dans le cas où un tableau est continu ce qui n'est pas forcément toujours mon cas. Je pensais alors utiliser Range(A65536).End(xlUp) pour partir de la fin de ma colonne et remonter jusqu'à la première valeur trouvée.

    Mais j'ai toujours le même problème d'utilisation de mes plages de mesures pour créer mon graphe.

    Désolé si j'ai été long ou pas très clair dans mes explications

  4. #4
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    J'allais justement te conseiller de modifier ta recherhce de dernierecellule par ce que tu proposes. Il vaut mieux partir de la fin, et remonter pour trouver la dernière cellule, et pas le premier trou...
    Maintenant, quand tu affectes ta data source, le "Range(Cells(5,2),..." est bizarre. Ce n'est pas plutôt Cells(5, i) qu'il faut mettre?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 179
    Par défaut
    Non, car il s'agit toujours de la même colonne qui doit servir pour les abscisses, elle ne doit donc pas varier en fonction de l'indice i, qui concerne les colonnes de valeurs des ordonnées mais bien la colonne des abscisses dont les valeurs se trouvent à partir de la ligne 5 jusqu'à la dernière ligne de la colonne 2.

    Donc si tu as des suggestions pour modifier le code, car VBA Excel 2000 ne veut pas :-(

  6. #6
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ça fait longtemps que je ne me suis pas frotté aux graphes en VBA, c'est vrai, mais il n'y a pas 2 zones à déclarer? Une pour les abscisses, l'autre pour les ordonnées, dans 2 attributs différents?
    Si tu crées le graphe en enregistrant une macro, ça te donne quoi?
    Je fais un test...

  7. #7
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ben oui, c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B11:H11"), PlotBy _
            :=xlRows
    ActiveChart.SeriesCollection(1).XValues = "=Feuil1!R10C2:R10C8"
    C'est ce que j'ai obtenu en enregistrant une macro pendant que je créais mon graphe. Fais la même chose, et tu devrais t'en sortir...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    regarde ça ça peut pt'être t'aider
    http://www.developpez.net/forums/vie...967&highlight=

Discussions similaires

  1. Liste de choix déroulante sur VBA excel - débutante
    Par Amandine P. dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/05/2008, 14h55
  2. [VBA-Excel] Déclaration d'un objet
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2006, 15h31
  3. [VBA Excel Débutant] Tri d'un fichier Excel depuis Access
    Par elgringo2007 dans le forum Access
    Réponses: 3
    Dernier message: 07/08/2006, 16h21
  4. [VBA-E] macro VBA excel suppression graphiques
    Par totoza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/05/2006, 08h45
  5. VBA Excel (débutant) - problème avec la copie d'un range
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2006, 16h32

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