Ajout de nouvelle courbe à un graphique automatiquement

Bonjour,

Débutant tout juste avec l'utilisation de macro Excel, j'aurais besoin de votre aide. J'ai essayé de chercher si mon sujet n'avait pas été déjà traité mais je n'ai rien trouvé.

Mon besoin est assez simple (je pense ), je veux tester 40 échantillons et je voudrais un graphique avec 40 courbes superposées mais je n'ai pas envie d'ajouter manuellement chaque courbe à la main.

J'ai enregistré un macro pour voir le code généré lors de l'ajout de deux courbes, j'obtiens ceci:

Sub graphique()

'

' graphique Macro

'

'

ActiveSheet.ChartObjects("Graphique 3").Activate

ActiveSheet.ChartObjects("Graphique 3").Activate

ActiveChart.SeriesCollection.NewSeries

ActiveChart.SeriesCollection(1).Name = "='Raw data'!$C$1"

ActiveChart.SeriesCollection(1).XValues = "='Raw data'!$C:$C"

ActiveChart.SeriesCollection(1).Values = "='Raw data'!$D:$D"

ActiveChart.SeriesCollection.NewSeries

ActiveChart.SeriesCollection(2).Name = "='Raw data'!$E$1"

ActiveChart.SeriesCollection(2).XValues = "='Raw data'!$E:$E"

ActiveChart.SeriesCollection(2).Values = "='Raw data'!$F:$F"

J'aimerais savoir comment on insert une boucle pour que ce code se répète 50 fois. Sachant que je veux juste décaler le code de deux colonnes à chaque fois.

Vous remerciant tous de votre future aide .

Bonjour.

Je n'y connais pas grand chose en graphiques, mais pourrais-tu enregistrer la macro en nommant tes cellules en L1C1 ? (fichier>option> utiliser références L1C1), sinon ma seule idée c'est de boucler avec de l'ascii et c'est sensiblement plus chia... long

Bonne journée.

Bonjour Elhevan,

J'avais effectivement essayé avec le code ASCII mais j'arrivais pas à définir une variable correctement.

mon idée était de définir une variable

j=65 (équivalent à A)

z= 91 (équivalent à Z)

i=1

while j<z

k=chr(j)

l=chr(j+1)

ActiveChart.SeriesCollection.NewSeries

ActiveChart.SeriesCollection(i).Name = "='Raw data'!$k$1"

ActiveChart.SeriesCollection(i).XValues = "='Raw data'!kC:$k"

ActiveChart.SeriesCollection(i).Values = "='Raw data'!$l:$l

j=j+2

i=i+1

wend

Le problème c'est que lorsque que je mets mes variable comme indice de colonne ('Raw data'!$k$1" par exemple) le programme comprends la colonne L et non la variable l.

Est ce que je suis clair =) ???

Merci d'avance,

Salut,

Pas d'autre sugestions pour ma demande ?

Vous remerciant par avance,

Cordialement,

bqadukmf a écrit :

Bonjour Elhevan,

J'avais effectivement essayé avec le code ASCII mais j'arrivais pas à définir une variable correctement.

mon idée était de définir une variable

j=65 (équivalent à A)

z= 91 (équivalent à Z)

i=1

while j<z

k=chr(j)

l=chr(j+1)

ActiveChart.SeriesCollection.NewSeries

ActiveChart.SeriesCollection(i).Name = "='Raw data'!$k$1"

ActiveChart.SeriesCollection(i).XValues = "='Raw data'!kC:$k"

ActiveChart.SeriesCollection(i).Values = "='Raw data'!$l:$l

j=j+2

i=i+1

wend

Le problème c'est que lorsque que je mets mes variable comme indice de colonne ('Raw data'!$k$1" par exemple) le programme comprends la colonne L et non la variable l.

Est ce que je suis clair =) ???

Merci d'avance,

Pour ça tu dois enlever tes variables des "" pour qu'il comprenne que ce n'est pas du texte, le problème n'est pas là, le problème c'est qu'au bout d'un moment ça passe en AA, AB... et c'est ennuyant. D'où l'idée de passer tes colonnes en chiffre pour simplifier cette partie.

J'ai essayé d'enlever mes variables d'entre les "" mais cela ne fonctionne toujours pas

Sub courbe()
'
' courbe Macro
'

'
Dim j As Integer
Dim z As Integer
Dim i As Integer
Dim k As Characters
Dim l As Characters

j = 68
z = 91
i = 1
While j < z
k = Chr(j)
l = Chr(j + 1)

ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i).Name = "='Raw data'!$"k"$1"
ActiveChart.SeriesCollection(i).XValues = "='Raw data'!$"k"C:$"k""
ActiveChart.SeriesCollection(i).Values = "='Raw data'!$"l":$"l""
j = j + 2
i = i + 1
Wend
End Sub

Sinon je n'ai rien contre passer les colonnes en chiffres mais je ne vois pas comment faire cela ou du moins je n'ai pas compris ce que vous vouliez me dire.

Merci pour votre aide =)

Pour enlever les variables il faut utiliser &

Par exemple (très con)

i = 7

"Bonjour, le chiffre i est " & i & "Bonne journée."

Donne : Bonjour, le chiffre i est7Bonne journée.

(fichier>option> utiliser références L1C1

Pour les chiffres

D'accord, effectivement je n'avais pas bien compris comment changer la numérotation colonne. Je vous remercie.

Je vais essayer en espérant que mon nouveau code fonctionnera.

Merci beaucoup pour l'aide =)

Bonjour,

Suite à vos conseils, j'ai modifié le code qui se simplifie vraiment beaucoup.

    Dim i As Integer
    Dim Colomn As Integer
    Dim Colomn_Title As Integer
    Dim Colomn_Value As Integer
    Dim Nb_sample As Integer
    Colomn = 5 'Define start colomn
    Nb_sample = 2

    ActiveSheet.ChartObjects("Graphique 1").Activate

    For i = 1 To Nb_sample
        Colomn_Title = Colomn - 1
        Colomn_Value = Colomn
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(i).Name = "=Feuil1!L1C" & Colomn_Title
        ActiveChart.SeriesCollection(i).XValues = "=Feuil1!C" & Colomn_Title
        ActiveChart.SeriesCollection(i).Values = "=Feuil1!C" & Colomn_Value
        Colomn = Colomn + 2
    Next
End Sub

Cependant, j'ai encore des problèmes car pour les lignes de code ou je veut sélectionner des colonnes entières cela ne fonctionne pas:

        ActiveChart.SeriesCollection(i).XValues = "=Feuil1!C" & Colomn_Title
        ActiveChart.SeriesCollection(i).Values = "=Feuil1!C" & Colomn_Value

Vous trouverez ci joint le fichier excel que j'utilise pour le code. Il faut savoir que j'ai besoin de sélectionner une colonne entière car je ne sais pas exactement combien de lignes de données je vais avoir.

Vous remerciant par avance,

10classeur100.xlsm (19.04 Ko)
ActiveChart.SeriesCollection(i).Values = "=Feuil1!C" & Colomn_Value

Par

ActiveChart.SeriesCollection(i).Values = "=" & Sheets("Feuil1").Range(Column(Colomn_Value), Columns(Colomn_Value)).Address

?

Voici le code modifié:

Sub Macro6()
'
' Macro6 Macro
'

'

    Dim i As Integer
    Dim Column As Integer
    Dim Column_Title As Integer
    Dim Column_Value As Integer
    Dim Nb_sample As Integer
    Column = 5 'Define start column
    Nb_sample = 2

    ActiveSheet.ChartObjects("Graphique 1").Activate

    For i = 1 To Nb_sample
        Column_Title = Column - 1
        Column_Value = Column
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(i).Name = "=Feuil1!L1C" & Column_Title
        ActiveChart.SeriesCollection(i).XValues = "=" & Sheets("Feuil1").Range(Columns(Column_Title), Columns(Column_Title)).Address
        ActiveChart.SeriesCollection(i).Values = "=" & Sheets("Feuil1").Range(Columns(Column_Value), Columns(Column_Value)).Address
        Column = Column + 2
    Next
End Sub

J'ai une erreur 1004 pour les deux nouvelles lignes rajoutées, je ne comprends pas vraiment pourquoi car je pense que la syntaxe est correcte. J'ai rajouté un "s" a Column"s" sinon il m'indiquait fonction inconnue. Autrement je ne vois pas grand chose d'autre.

Merci d'avance

ActiveChart.SeriesCollection(i).XValues = WorkSheets("Feuil1").Range(Columns(Column_Title), Columns(Column_Title))

?

C'est bon ça marche !!!

Merci de ton aide

Rechercher des sujets similaires à "ajout nouvelle courbe graphique automatiquement"