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 :

[XL-2010] Sélection de plusieurs plages de données pour un graphique : erreur macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Points : 188
    Points
    188
    Par défaut [XL-2010] Sélection de plusieurs plages de données pour un graphique : erreur macro
    Bonjour,

    Cette question date un peu mais étant en stage, je rencontre le même problème.

    Pour modifier la plage du ActiveChart.SeriesCollection(1).XValues il faut mettre la plage au format VBA, et non Excel.

    Par exemple il faut mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).XValues = Worksheets("Ma_feuille").Range("A1: D1")
    Mais maintenant je rencontre un autre problème:
    Comment lui attribuer une plage discontinue ?

    En effet, je souhaiterai sélectionner des données du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Ma_feuille").Range("A1: D1, "F1:J1")
    Mais dans ce cas, VBA réagis comme si j'avais sélectionner le plage A1:J1.

    Pouvez vous me renseigner ?
    Merci.

    EDIT:

    Je viens de trouver la réponse. Il faut mettre une Union de plage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim maRange As Range
    Set maRange = Union(Worksheets("ma_feuille").Range("C28:G28"), Worksheets("ma_feuille").Range("J28:N28"))
     
    ActiveChart.SeriesCollection(1).Values = maRange
    Voilà !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).XValues = Range("A1:D1;F1:J1")

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Points : 188
    Points
    188
    Par défaut
    Daniel C.

    J'ai vérifié ta proposition, mais elle ne passe pas chez moi.

    Certes dans un graphique EXCEL tu sépares tes plages de cellules par un ";" mais en VBA je ne pense pas que l'objet RANGE accepte le ";"

    Vois-tu ce que je veux dire ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Union ne fonctionne pas non plus pour les abscisses, ce qui était demandé.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Au temps pour moi. La première année flagrante de l'année ! Il fallait voir une virgule au lieu d'un point-virgule. Les deux codes sont équivalents :

    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
    Sub test1()
        With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
            Set marange = Union(Range("A3:A6"), Range("A8:A12"))
            .Values = marange
            Set marange = Union(Range("B3:B6"), Range("B8:B12"))
            .XValues = marange
        End With
    End Sub
    Sub test2()
        With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
            .Add
            Set marange = Range("A3:A6,A8:A12")
            .Values = marange
            Set marange = Range("B3:B6,B8:B12")
            .XValues = marange
        End With
    End Sub

Discussions similaires

  1. Résultat sur plusieurs plages de données
    Par Sylcoco dans le forum Excel
    Réponses: 1
    Dernier message: 22/01/2014, 13h38
  2. [XL-2010] Sélection de plusieurs plages de données pour un graphique : erreur macro
    Par Piixx_e dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/12/2013, 11h05
  3. Pb de sélection d'une plage de donnée
    Par rob1son76 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2012, 18h08
  4. [XL-2003] faire une sélection dans une plage de données pour renseigner une liste de choix
    Par tremens dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/03/2010, 18h12
  5. Réponses: 2
    Dernier message: 24/05/2005, 16h35

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