Créer un graphique excel sans ouvrir l'appli

nonoff68 Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 avril 2007 - 16 avril 2007 à 12:39
nonoff68 Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 avril 2007 - 19 avril 2007 à 14:42
Bonjour,

Je souhaite créer un graphique "nuage de points" sans ouvrir excel, en effet, j'ai créer un fichier .vbs à partir du simple bloc notes dans lequel j'importe sous excel un fichier xls, que je met en forme, tout cela sans excel "visible". Mais lorsque je souhaite créer un graph à partir d'une sélection de données, j'ai une erreur "type incompatible"  sur la ligne "chartype":

......
oXL.worksheets.add
oXL.workSheets("Feuil1").Select   
oXL.workSheets("Feuil1").Name = "graphiques"
oXL.workSheets("relevés").Select
oXL.workSheets("relevés").Columns("A:C").Select    'oXL.workSheets("relevés").Range("A2:C65").Select
oXL.Charts.Add
oXL.ActiveChart.ChartType = xlXYScatterSmooth       oXL.SetSourceData Source oXL.workSheets("relevés").Range("A2:C65"), PlotByxlColumns
oXL.Location Where=xlLocationAsObject, Name="graphiques"
With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Rayon"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Plan"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Rayon en µm"
end With

Donc si quelqu'un sait si c'est tout simplement possible de créer un graph de cette façon, je suis preneur de toutes suggestions !!!

H E L P

10 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 avril 2007 à 12:56
xlXYScatterSmooth       est une constante non reconnue par VB6

définie la en haut de ton fichier....

Const xlXYScatterSmooth = 72

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 avril 2007 à 13:01
*non reconnue par VBS

(reflex de frappe d'un '6' après avoir tapé 'VB' ^^)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
nonoff68 Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
16 avril 2007 à 13:31
Tout d'abord, merci d'avoir répondu aussi vite.

J'ai rajouté ta ligne, mais cela ne change pas grand chose, l'erreur est passée à la ligne suivante, je place tout le code, cela permettra peut être de déceler une autre gaffe de ma part:

l'erreur:

le code complet :   note: les fichiers .casta sont des xls un peut particulier que je met en forme sous excel.. mais je doute que le problème vienne de la !

dim xlRange
Const xlXYScatterSmooth = 72
Set OXl = createobject ("Excel.Application")
Filename = oXL.GetOpenFilename("Fichiers casta, *.casta")
if (Filename<>false)then
while (MsgBox(Filename, vbYesNo, "Etudier les données de ce fichier ?") = vbNo)
Filename = oXL.GetOpenFilename("Fichiers casta, *.casta")
wend
'wscript.echo Filename
oXL.Visible = true
oXL.workbooks.OpenText Filename,,,1,,,False,,True,,False,,,,"."
Set xlWks1 = OXl.Worksheets(1)
oXL.workSheets(1).Name = "relevés"
Set xlRange = xlWks1.Range("A1:O60000")
Set cel =xlRange.Cells(1, 1)
cel.EntireRow.Insert
xlRange.Cells(0, 1).Value = "Plan"
xlRange.Cells(0, 2).Value = "a0"
xlRange.Cells(0, 3).Value = "b0"
xlRange.Cells(0, 4).Value = "E0"
xlRange.Cells(0, 5).Value = "Angle0"
xlRange.Cells(0, 6).Value = "R0 en pixels"
xlRange.Cells(0, 7).Value = "a1"
xlRange.Cells(0, 8).Value = "b1"
xlRange.Cells(0, 9).Value = "X1"
xlRange.Cells(0, 10).Value = "Y1"
xlRange.Cells(0, 11).Value = "E1"
xlRange.Cells(0, 12).Value = "Angle1"
xlRange.Cells(0, 13).Value = "R1 en pixels"
xlRange.Cells(0, 14).Value = "Xc en pixels"
xlRange.Cells(0, 15).Value = "Yc en pixels"
xlRange.Cells(0, 16).Value = "b0/a0"
xlRange.Cells(0, 17).Value = "Excentricité V0"
xlRange.Cells(0, 20).Value = "b1/a1"
xlRange.Cells(0, 21).Value = "Excentricité V1"
xlRange.Cells(0, 24).Value = "Epsilon0"
xlRange.Cells(0, 25).Value = "Norme de Q"
xlRange.Cells(0, 26).Value = "Q/Epsi0"
xlRange.Cells(0, 28).Value = "E0-E1"
oXL.worksheets.add
oXL.workSheets("Feuil1").Select  
oXL.workSheets("Feuil1").Name = "graphiques"
oXL.workSheets("relevés").Select
'oXL.workSheets("relevés").Range("A2:C65").Select
oXL.workSheets("relevés").Columns("A:C").Select
oXL.Charts.Add
oXL.ActiveChart.ChartType = xlXYScatterSmooth  'type, cette foi, il le reconnait apparement oXL.SetSourceData Source oXL.workSheets("relevés").Range("A2:C65"), PlotBy xlColumns 'erreur ici
oXL.Location Where =xlLocationAsObject, Name="graphiques"
With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Rayon"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Plan"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Rayon en µm"
end With
end if
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 avril 2007 à 13:58
MEME CHOSE !

xlColumns est une constante non reconnue par VBS

définie la en haut de ton fichier....

Const xlColumns = 2

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 avril 2007 à 14:00
je prend de l'avance :

Const xlLocationAsObject = 2

suffit de regarder dans l'editeur VBA d'Excel... (dans l'explorateur d'objets, en pressant F2)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
nonoff68 Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
16 avril 2007 à 15:16
Merci, on progresse !! Vu mon niveau en VB, et le peu de temps que j'ai pour faire cette appli, je suis bien content de tes remarques !

J'ai consulté l'éditeur et j'ai remarquer les bibliothèques et les objets. Mais lorsque je met:oXL.SourceData Source oXL.workSheets("relevés").Range("A2:C65"), PlotBy xlColumns

je me retrouve encore avec un type incompatible malgré le fait que j'ai définit xlColumns en haut.
Si je place oXL.Chart.SourceData Source......   c'est encore pire.
Donc vu que je suis une bille la dedans, je ne vois absolument pas quelle arborescence il faut réaliser pour mettre en place les caractéristiques du graph, j'ai fait des essais "au pif" mais les "type incompatible" ou les "cette objet ne gère pas cette  méthode" etc reviennent...

oXL.Charts.Add
oXL.ActiveChart.ChartType = xlXYScatterSmooth   'la c'est OK oXL.SourceData Source oXL.workSheets("relevés").Range("A2:C65"), PlotBy xlColumns 'la ça ne l'est plus
oXL.Location Where =xlLocationAsObject, Name="graphiques"
oXL.ActiveChart.HasTitle = True
oXL.ActiveChart.ChartTitle.Characters.Text = "Rayon"
oXL.ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True
oXL.ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Plan"
oXL.ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
oXL.ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Rayon en µm"
end if
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 avril 2007 à 16:26
syntaxe incorrecte....
j'ignore ce a quoi correspond ce PlotBy, et où il est censé être

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
nonoff68 Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
16 avril 2007 à 18:15
ben, pour faire le code, j'ai fait ce que je voulais sous excel en enregistrant une macro, puis j'ai pris le code de la macro que j'ai retranscrit
0
nonoff68 Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
19 avril 2007 à 13:54
Je ne trouve toujours pas de solution "snif", mais y a t il un moyen de faire autrement, j'ai pensé à réaliser le début de ce script puis "faire ouvrir" par ce même script une macro pré-enregistrée automatiquement pour faire les graphs...

Est-ce possible ?? si oui, comment ??
0
nonoff68 Messages postés 6 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 avril 2007
19 avril 2007 à 14:42
J'ai creer un nouveau classeur xls dans lequel figure la macro me permettant de realiser mes graphs, a priori, il est possible par oXL.run "......"  de lancer cette macro, mais je ne trouve pas ce que je dois mettre en paramètre de cette méthode, le chemin complet du classeur ne fonctionne pas, le nom de la macro non plus... help !!
0
Rejoignez-nous