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 :

Tracer automatiquement des courbes [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Par défaut Tracer automatiquement des courbes
    Bonjour à tous,

    J'ai un problème avec un petit projet. Je voudrais tracer des courbes à partir d'un tableau. J'ai un tableau de 7 colonnes (disons plusieurs tableaux). Le but est de tracer des courbes en selectionnant deux colonnes. Une fois une cellule de la première colonne selectionnée, le calcul se fait comme on peut le voir avec le numero des colonnes.
    Le problème se situe au niveau du tracé, le programme n'arrive à tracer les courbes. Je souhaiterais les tracer sur la même feuille que le tableau. Une seule arrive à être tracée mais pas comme je veux. Au lieu de tracer l'abscisse en fonction de l'ordonnée, les deux colonnes de la plage sont tracées indépendemment

    Voici le programme:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub selection()
     
    Dim ncol1, ncol2, ncol3, ncol4
    Dim graph As Chart
     
    ncol1 = ActiveCell.Column
    ncol2 = ncol1 + 1
    ncol3 = ncol1 + 2
    ncol4 = ncol1 + 6
     
    plage1 = Union(Cells(1, ncol1), Cells(1, ncol3)).EntireColumn.Select
    plage2 = Union(Cells(1, ncol1), Cells(1, ncol2)).EntireColumn.Select
    plage3 = Union(Cells(1, ncol1), Cells(1, ncol4)).EntireColumn.Select
     
    Set graph = Charts.Add
    With graph
    .ChartType = xlXYScatterSmoothNoMarkers
    .SetSourceData Source:=Range(plage1)
    End With
    ActiveChart.Location where:=xlLocationAsObject, Name:=ActiveSheet.Name
     
    Set graph = Charts.Add
    With graph
    .ChartType = xlXYScatterSmoothNoMarkers
    .SetSourceData Source:=Range(plage2)
    End With
    ActiveChart.Location where:=xlLocationAsObject, Name:=ActiveSheet.Name
     
    Set graph = Charts.Add
    With graph
    .ChartType = xlXYScatterSmoothNoMarkers
    .SetSourceData Source:=Range(plage3)
    End With
    ActiveChart.Location where:=xlLocationAsObject, Name:=ActiveSheet.Name
     
    End Sub
    Je me suis aidé par les morceaux de code des problèmes similaires dans le forum
    Merci pour votre précieuse aide !

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Bonjour,

    J'ai pas bien compris si tu veux un oou plusieurs graphiques. Pour un seul graphique :

    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
    29
    30
    31
    32
    33
    34
    35
    Sub selection()
     
    Dim ncol1, ncol2, ncol3, ncol4
    Dim Graph As Chart, Ligne As Long, Nom As String, Graph1 As ChartObject
    Dim Plage1 As Range, Plage2 As Range, Plage3 As Range, Plage4 As Range
    Nom = ActiveSheet.Name
     
    ncol1 = ActiveCell.Column
    ncol2 = ncol1 + 1
    ncol3 = ncol1 + 2
    ncol4 = ncol1 + 6
    Ligne = Cells(Rows.Count, ncol1).End(xlUp).Row
    [Q1].Select
     
    Set Plage1 = Range(Cells(1, ncol1), Cells(Ligne, ncol1))
    Set Plage2 = Range(Cells(1, ncol2), Cells(Ligne, ncol2))
    Set Plage3 = Range(Cells(1, ncol3), Cells(Ligne, ncol3))
    Set Plage4 = Range(Cells(1, ncol4), Cells(Ligne, ncol4))
     
    Set Graph = Charts.Add
    Graph.Location Where:=xlLocationAsObject, Name:=Nom
    Set Graph1 = ActiveSheet.ChartObjects(1)
    With Graph1.Chart
        .ChartType = xlXYScatterSmoothNoMarkers
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Values = "=" & Nom & "!" & Plage2.Address
        .SeriesCollection(1).XValues = "=" & Nom & "!" & Plage1.Address
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Values = "=" & Nom & "!" & Plage3.Address
        .SeriesCollection(2).XValues = "=" & Nom & "!" & Plage1.Address
        .SeriesCollection.NewSeries
        .SeriesCollection(3).Values = "=" & Nom & "!" & Plage4.Address
        .SeriesCollection(3).XValues = "=" & Nom & "!" & Plage1.Address
    End With
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Par défaut
    Merci d'avance

    En fait les trois graphes doivent être sur différents graphiques mais sur la même feuille. Un peu comme sur la figureNom : Présentation1.jpg
Affichages : 1371
Taille : 106,9 Ko

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Pour la disposition, les graphiques vont se superposer. J'aurais besoin de la taille (hauteur et largeur) de chaque graphique ainsi que leur emplacement (distance depuis le bords haut et gauche). Voici déjà les graphiques superposés. Fais-les glisser pour les disposer manuellement.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub selection()
     
    Dim ncol1, ncol2, ncol3, ncol4
    Dim Graph As Chart, Ligne As Long, Nom As String, Graph1 As ChartObject
    Dim Plage1 As Range, Plage2 As Range, Plage3 As Range, Plage4 As Range
    Nom = ActiveSheet.Name
     
    ncol1 = ActiveCell.Column
    ncol2 = ncol1 + 1
    ncol3 = ncol1 + 2
    ncol4 = ncol1 + 6
    Ligne = Cells(Rows.Count, ncol1).End(xlUp).Row
    [Q1].Select
     
    Set Plage1 = Range(Cells(1, ncol1), Cells(Ligne, ncol1))
    Set Plage2 = Range(Cells(1, ncol2), Cells(Ligne, ncol2))
    Set Plage3 = Range(Cells(1, ncol3), Cells(Ligne, ncol3))
    Set Plage4 = Range(Cells(1, ncol4), Cells(Ligne, ncol4))
     
    Set Graph = Charts.Add
    Graph.Location Where:=xlLocationAsObject, Name:=Nom
    Set Graph1 = ActiveSheet.ChartObjects(1)
    With Graph1.Chart
        .ChartType = xlXYScatterSmoothNoMarkers
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Values = "=" & Nom & "!" & Plage2.Address
        .SeriesCollection(1).XValues = "=" & Nom & "!" & Plage1.Address
    End With
    Set Graph = Charts.Add
    Graph.Location Where:=xlLocationAsObject, Name:=Nom
    Set Graph1 = ActiveSheet.ChartObjects(2)
    With Graph1.Chart
        .ChartType = xlXYScatterSmoothNoMarkers
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Values = "=" & Nom & "!" & Plage3.Address
        .SeriesCollection(1).XValues = "=" & Nom & "!" & Plage1.Address
    End With
    Set Graph = Charts.Add
    Graph.Location Where:=xlLocationAsObject, Name:=Nom
    Set Graph1 = ActiveSheet.ChartObjects(3)
    With Graph1.Chart
        .ChartType = xlXYScatterSmoothNoMarkers
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Values = "=" & Nom & "!" & Plage4.Address
        .SeriesCollection(1).XValues = "=" & Nom & "!" & Plage1.Address
    End With
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Par défaut
    Merci ça marche bien !

    Mais dites moi, l'instruction [Q1].select, ça permet de faire au juste.
    C'est un peu nouveau pour un débutant comme moi.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Bien vu !

    C'est pour sélectionner une cellule qui soit en dehors des tableaux, parce que, sinon, Excel tracera toutes les séries de la plage (CurrentRegion) ou se trouve la cellule active. Tu devras peut-être utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Rows.Count, 1).End(xlUp).Offset(2).Select
    à la place.

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

Discussions similaires

  1. tracer des courbes en opengl???
    Par jollo dans le forum OpenGL
    Réponses: 10
    Dernier message: 28/02/2013, 09h28
  2. truc pour tracer des courbe en temps reel qvec perl tk
    Par mohaz dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 16/06/2009, 16h48
  3. Tracer des courbes
    Par skywaltitou dans le forum MFC
    Réponses: 5
    Dernier message: 27/03/2007, 15h22
  4. Tracer des courbes - GtkCurve
    Par Ange44 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 07/08/2006, 14h44
  5. Réponses: 7
    Dernier message: 06/05/2006, 22h51

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