créer un grphique en vba

loic3869

XLDnaute Occasionnel
Bonjour

Je voudrais créer un graphique en VBA avec les A en ordonnées et les B en abscisses.

J'ai inséré ce code:

ActiveSheet.ChartsObjects("Graph1").Activate
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Select
ActivateChart.SeriesCollection(1)XValues = "=Réglages!A2:A10000"
ActiveChart.SeriesCollection(1).Values = "=Réglages!B2:B10000"

La ligne ActivateChart.SeriesCollection(1)XValues = "=Réglages!A2:A10000" n'est pas accepté ou est l'erreur ?

Faut-il rajouter d'autres lignes apres avoir defini X et Y ?

Merci d'avance.

Bonne journée.
 

pierrejean

XLDnaute Barbatruc
Re : créer un grphique en vba

Re

A tester:

Code:
Private Sub CommandButton1_Click()
x = Sheets("Feuil3").ChartObjects.Count
If x <> 0 Then
 num = CInt(Right(Sheets("Feuil3").ChartObjects(x).Chart.ChartTitle.Characters.Text, 1)) + 1
 inc = x * 230
Else
 num = 1
 inc = 0
End If
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("X2:X10003"), PlotBy:=xlColumns
ActiveChart.HasAxis(xlCategory, xlPrimary) = False
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil3"
ActiveChart.HasTitle = True
ActiveChart.ChartTitle.Characters.Text = "Graphique" & num
w = Replace(ActiveChart.Name, "Feuil3", "")
ActiveSheet.Shapes(w).IncrementTop inc
End Sub

Nota: La valeur 230 est eventuellement a ajuster
 

loic3869

XLDnaute Occasionnel
Re : créer un grphique en vba

Merci.

Pour la supeposition ce n'est pas grave c'est ce que je veux. Par contre auriez-vous une idée pour qu'il se place un endroit précis sur la feuille et correctement ?

Est-il possible de modfier la largeur du trait du graphique en vba ?

Est-il possible d'avoir l'affichage du graphique dans la feuille 3 et dans une autre feuille graphique en même temps ?

Merci.
 

loic3869

XLDnaute Occasionnel
Re : créer un grphique en vba

J'ai trouvé comment placer le graphique ou je voulais.

Il me reste plus qu'a trouver comment modifier la largeur du trait du graphique en vba.

Et pour l'affichage l'affichage du graphique dans la feuille 3 et dans une autre feuille graphique en même temps ça serait bien mais je sais pas encore si c'est indispensable.

Bonne soirée.
 

loic3869

XLDnaute Occasionnel
Re : créer un grphique en vba

Bonjour

Je dois multiplier par une valeur contenue dans une cellule une colonne entière.

Comment feriez-vous ? Dans VBA ou EXCEL ?

En VBA le symbole multiplier n'est pas pris:

For k = 1 To 10003

Cells(17,5).Value.(Cells(k,24).Value)=(Cells(k,24).Value)

Exit For


Next

Merci.
 

loic3869

XLDnaute Occasionnel
Re : créer un grphique en vba

Apparemment l'epaisseur du trait est moins épais sans raison . Tant mieux!

Pour l'opération elle fonctionne très bien. Maintenant les graphiques ne se superposent plus il faut les supprimer pour qu'ils se remettent en place. Auriez-vous une idée sans intervention du clavier ou de la souris ?

Merci.
 

pierrejean

XLDnaute Barbatruc
Re : créer un grphique en vba

Re

pour les superposer supprimer les lignes en bleu

Code:
Private Sub CommandButton1_Click()
x = Sheets("Feuil3").ChartObjects.Count
If x <> 0 Then
 num = CInt(Right(Sheets("Feuil3").ChartObjects(x).Chart.ChartTitle.Characters.Text, 1)) + 1
[COLOR=blue]inc = x * 230[/COLOR]
Else
 num = 1
[COLOR=blue] inc = 0[/COLOR]
End If
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("X2:X10003"), PlotBy:=xlColumns
ActiveChart.HasAxis(xlCategory, xlPrimary) = False
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil3"
ActiveChart.HasTitle = True
ActiveChart.ChartTitle.Characters.Text = "Graphique" & num
w = Replace(ActiveChart.Name, "Feuil3", "")
[COLOR=blue]ActiveSheet.Shapes(w).IncrementTop inc[/COLOR]
End Sub
 

loic3869

XLDnaute Occasionnel
Re : créer un grphique en vba

Merci pierrejean j'essaierai plus tard parce que là j'ai un autre problème très urgent qui risque de me faire une mauvaise note. Lundi tout allait bien et aujourd'hui je teste et plus rien ne va !!

Voilà je vous joint mon fichier complet pour vous compreniez bien.

Regardez le bouton "Courbes" quand je fais mon expérience le calcul est très long. (1heure)

Et quand je colle le programme dans un nouveau classeur avec un seul bouton l'opération est très rapide (2-3 min). L'opération doit être très rapide car le cout de l'essai est très cher et ne peut durer longtemps.

Auriez-vous une idée de ce ralentissement ?

Merci d'avance.

http://cjoint.com/?fwsVQTxpx6

Bonne journée.

Loic.
 

pierrejean

XLDnaute Barbatruc
Re : créer un grphique en vba

Re

Absolument désolé , mais je ne vois vraiment pas !

A l'ouverture du fichier je me suis trouvé avec un manque de reference ActiveX sur des variables (diff et x)
Ensuite je suis rapidement tombé sur une erreur 429 me disant qu'un controle Activex ne peut pas creer d'objet
Et comme pour ma part je n'ai jamais créé d'objet (jusqu'a present ceux d'Excel m'ont largement suffi) je ne peux rien pour toi
En esperant qu'une de nos Gosses Tetes passe par la ......
 

loic3869

XLDnaute Occasionnel
Re : créer un grphique en vba

J'ai résolu le problème pour la lenteur.

J'ai montré mon fichier à mon tuteur il a apprécié il faut que je modifie certaines choses dans la mise en page.

Et au niveau du graphique il veut que le fond soit blanc automatiquement et que le texte série 1 soit supprimé vous savez comment on fait ça ?

Merci d'avance.
 

pierrejean

XLDnaute Barbatruc
Re : créer un grphique en vba

Re

Pour l'edification des foules (et la mienne en particulier) peux-tu nous dire comment tu t'en es sorti ?

pour ton graphique teste:

Code:
ActiveChart.PlotArea.Interior.ColorIndex = xlNone
ActiveChart.Legend.Delete
 

loic3869

XLDnaute Occasionnel
Re : créer un grphique en vba

Bonjour,

J'ai rajouté cette ligne:

Application.Calculation = xlManual en début de boucle For

Application.Calculation = xlAutomatic en fin de boucle For

Cela m'a été conseillé par un internaute.

Pour la superposition possible je n'ai pas exactement utilisé votre programme mais celui-ci:

Dim NomAxeX As String, NomAxeY As String
x = Sheets("Réglages").ChartObjects.Count
If x <> 0 Then
num = CInt(Right(Sheets("Feuil3").ChartObjects(x).Chart.ChartTitle.Characters.Text, 1)) + 1
Else
num = 1
End If
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Réglages").Range("X2:X4003"), PlotBy:=xlColumns
ActiveChart.HasAxis(xlCategory, xlPrimary) = False
ActiveChart.Location Where:=xlLocationAsObject, Name:="Rapport"
ActiveChart.HasTitle = True
ActiveChart.ChartTitle.Characters.Text = "Courant" & num
ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True 'oui on veut nommer l'axe des absisses (X)
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Temps" 'nom de l'axe X
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True 'oui on veut nommer l'axe des ordonnées (Y)
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "A" 'nom de l'axe Y
ActiveSheet.ChartObjects(1).Left = Range("A20").Left
ActiveSheet.ChartObjects(1).Top = Range("A20").Top
Selection.Border.LineStyle = xlContinuous
Selection.Border.Weight = xlThin
ActiveChart.PlotArea.Interior.ColorIndex = xlNone
ActiveChart.Legend.Delete

Comment feriez-vous ?

Merci.

Bonne journée.
 

minipuce

XLDnaute Occasionnel
Re : créer un grphique en vba

Bonjour Pierrejean et Loic3869,

pouvez-vous m'expliquer quelle partie du code permet de mettre un nom aux axes ?
J'ai posté cette question sur un autre fil, mais aucune réponse
Par avance merci,
Agnès
 

Discussions similaires

Statistiques des forums

Discussions
312 545
Messages
2 089 457
Membres
104 168
dernier inscrit
alain_geremy