Graphique XY multiple par VBA

Risleure

XLDnaute Occasionnel
Bonjour le Forum

Je récupère sur une feuille les données issues d'un appareil ("Reacteur"). Après mise en forme des données, je cherche à tracer un graphe XY "Nuage de points" sur une feuille distincte de la feuille de données. Je demande à VBA de me créer un graphe en utilisant les données de la colonne "C" à "G" et "K", la colonne "C" contient les X
Si pour la création des 4 1ères séries et la mise en forme des échelles, titres, ... etc tout se passe bien (car les 4 colonnes sont mitoyennes), je n'arrive pas à mettre ensuite une 5ème série car je ne sais pas dire à XL de sélectionner sur la feuille source la nouvelle colonne non mitoyenne. :(

Pour le moment, j'ai une solution fonctionnelle grace à une sélection de la colonne "C" à la colonne "K", je crée le graphique et ensuite je supprime les séries inutiles mais il doit y avoir plus "clean" :confused:

Voici un extrait du code employé.
Code:
Sub InsereGraph()
    Dim Wks As Worksheet
    Dim MG As Chart
    Dim LaSource As Range
    Dim Nb2Lignes As Integer 'Permet de connaitre le nb de lignes de la série
    
'Définition des variables
    Set Wks = ActiveSheet 'Permet de connaitre la feuille source dans le workbook utilisé
    Nb2Lignes = Wks.Range("Reacteur").Rows.Count - 13 ' - 13 car il y a 13 lignes d'en tête à ne pas utiliser
    Set LaSource = Wks.Range(Cells(14, 3), Cells(Nb2Lignes, 11)) 'C'est ici que je sélectionne toutes les colonnes !!!
    LaSource.Copy
    Charts.Add 'Traçage du nouveau graphe avec 8 séries
    Set MG = ActiveChart 'Permet de connaitre la feuille graphique dans le workbook

'Mise en forme du graphique
        With MG
            .ChartType = xlXYScatterLinesNoMarkers
            .SetSourceData Source:=LaSource, PlotBy:=xlColumns
            .HasTitle = False
            .HasAxis(xlCategory, xlPrimary) = True
            .HasAxis(xlValue, xlPrimary) = True
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Durée (hh:mm)"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Température (°C)"
        End With

'Effacement des 3 séries inutiles
    MG.SeriesCollection(7).Delete
        MG.SeriesCollection(6).Delete
            MG.SeriesCollection(5).Delete
...
End Sub
 

kjin

XLDnaute Barbatruc
Re : Graphique XY multiple par VBA

Bonjour,
Sans fichier et sans filet
Code:
'....
With ActiveSheet
    L = .Range("Reacteur").Rows.Count
    Set LaSource = Application.Union(.Range("C14:G" & L), .Range("K14:K" & L))   
    Charts.Add
    Set MG = ActiveChart 'Permet de connaitre la feuille graphique dans le workbook

'Mise en forme du graphique
        With MG
            .ChartType = xlXYScatterLinesNoMarkers
            .SetSourceData Source:=LaSource, PlotBy:=xlColumns
            .HasTitle = False
            .HasAxis(xlCategory, xlPrimary) = True
            .HasAxis(xlValue, xlPrimary) = True
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Durée (hh:mm)"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Température (°C)"
        End With
End With
'...
De plus je ne vois pas pourquoi ta plage nommée "Reacteur" commence à la ligne 1 si les données commencent à la ligne 14 :rolleyes:
A+
kjin
 

Risleure

XLDnaute Occasionnel
Re : Graphique XY multiple par VBA

Salut Mutzik

Le fichier ne me semblait pas utile pour exposer mon pb ;)

Salut kjin

Eh ben ça marche, reste à comprendre pourquoi....
Car si j'avais bien trouvé un topic sur le sujet (de C@thy) avec l'utilisation de Application.Union, je n'avais pas réussi à le mettre en pratique.

Bon pour répondre à ta question
De plus je ne vois pas pourquoi ta plage nommée "Reacteur" commence à la ligne 1 si les données commencent à la ligne 14
La plage réacteur est nommée lors de l'importation des données et il y a 12 lignes de paramètres puis les données utiles au graphe

Merci encore pour vos contributions
 

Discussions similaires

Réponses
1
Affichages
178
Réponses
0
Affichages
158

Statistiques des forums

Discussions
312 361
Messages
2 087 601
Membres
103 604
dernier inscrit
CAROETALEX59