Petit souci dans l'affichage automatique de graphe

Mikael

XLDnaute Nouveau
Bonjour à tous,

C'est avec un agréable plaisir que je viens vous rejoindre sur ce forum spécialement dédié aux utilisateurs d'Excel.

je fais à un stage à l'Hopital de garches (hopital spécialisé dans la rééducation des accidentés de la route) et je dois réaliser une macro afin de finaliser mon projet. Etant novice dans la création de macros sous excel et étant novice en programmation, j'ai du mal à me lancer...
Mon tuteur de stage m'a passé un bouquin sur Excel mais cela ne m'a pas franchement aidé...je suis entrain de nager...

En faite, je dois réaliser une macro permettant l'affichage sur le meme graphique de deux courbes dont la série de points est importés d'un ficher *.txt .
J'ai réalisé la macro mais seulement, l'affichage de la courbe ne s'effectue pas...le programme m'annonce un bug...bug que je n'arrive pas à corriger...
Et aussi, l'affichage des courbes tente de se faire dans une nouvelle page Excel, or, ce n'est pas ce que je souhaite. Je souhaiterais que l'affichage sébut à la feuille 1 au niveau de la cellule A15...mais comment faire...

J'essaye, j'essaye mais je n'y arrive pas...de plus mon tuteur ne connais rien a Excel, ce qui est plutot embetant...

Je transmet en fichier attaché ma mon travail. Si quelqu'un pourrait regarder pour me guider, ce serait très gentil de sa part.
En vous remerciant tous et toutes d'avance...

A bientot,

Mikael

[file name=Macro_deglutition.zip size=13258]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Macro_deglutition.zip[/file]
 

Pièces jointes

  • Macro_deglutition.zip
    12.9 KB · Affichages: 14

G.David

XLDnaute Impliqué
salut
ceci traité avec l'enregistreur de macros
je suis passé par l'importation de données externe
le graphique par l'assistant graphique si celà peut te dépanner:


With ActiveSheet.QueryTables.Add(Connection:= _
'TEXT;C:\\Macro_deglutition\\Macro déglutition\\5MLFILTRé_et_rééchantilloné.txt', _
Destination:=Range('A15'))
.Name = '5MLFILTRé_et_rééchantilloné'
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets('Feuil1').Range('A15:D343'), PlotBy _
:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:='Feuil1'
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With

Cordialement
G.David
 

albert

XLDnaute Occasionnel
bonsoir Mikael, G.David,
mo message croise celui de G.David
tu colles ce code dans vba
(j'ai cré un dossier hosto sur C: et j'ai mis les deux fichiers dedans)


Sub Macro1()
On Error Resume Next
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveWindow.Visible = False
Selection.Delete
Range('A15:B15').Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range('A15').Select
'--------------------------
'ChDir 'C:\\hosto'
Workbooks.OpenText Filename:='C:\\hosto\\5MLFILTRé_et_rééchantilloné.txt', _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1)), TrailingMinusNumbers:=True
Range('A1:B1').Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows('Macro Déglutition.xls').Activate
Range('A15').Select
ActiveSheet.Paste
Selection.Replace What:=',', Replacement:='.', LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.CutCopyMode = False
Charts.Add
ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
'Courbes à deux axes'
ActiveChart.SetSourceData Source:=Sheets('Feuil1').Range('A15:B343')
ActiveChart.Location Where:=xlLocationAsObject, Name:='Feuil1'
ActiveChart.SeriesCollection(2).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlCircle
.Smooth = False
.MarkerSize = 2
.Shadow = False
End With
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlCircle
.Smooth = False
.MarkerSize = 2
.Shadow = False
End With
ActiveWindow.Visible = False
Range('A15').Select
End Sub

albert
 

Mikael

XLDnaute Nouveau
Bonsoir,
Merci a vous deux, G.David et Albert. C'est très gentil à vous de m'avoir passer un coup de main.

->G.David, Excel annonce une erreur de compilation à la ligne 2. Le point virgule juste après TEXT ne lui plait apparement pas...si tu avais une idée à ce sujet...

-> Albert, il me mets une erreur de compilation à la ligne 1: il me m'entoure de jaune l'instruction 'Sub Macro1()'...

peut etre que je m'y prends mal pour insérer vos lignes de codes que vous m'avez gentillement passé.
Voici la procédure j'utilise: j'ouvre Outils/macro/visual basic éditor puis je copie le code (dans feuille 1) que vous m'avez passer.
ensuite je sélectionne 'Affichage Microsoft excel' et je lance la macro.
et là, il me cite les erreurs que je vous ait cité plus haut...

Si l'un d'entre vous deux pourrait se pencher sur la question, je ne saurais comment le remercier...

A bientot et encore merci...

Bonne soirée, Mikael

Message édité par: Mikael, à: 28/06/2005 20:00
 

G.David

XLDnaute Impliqué
Salut
le code que je t'ai envoyé est à titre d'exemple
comme je te l'ai dit il est genere par l'enregistreur de macros une fois nouvelle macros activee j'ai ouvert le fichier TXT par
données
données externes
là j'ai suivi les demandes de la boite de dialogue
ce qui a cree la requete en automatique
c'est apres que j'ai recree une deuxieme macro pour le graphique
cette derniere je l'ai ajoutée à la premiere
le test de la macro fait apparaitre un graphique sur les donnees importees . Bien sur il faudra apres afinerr le code pour finaliser la macro
Cordialement
G.David
 

albert

XLDnaute Occasionnel
bonjour Mikael, G. David, le forum,

' Outils/macro/visual basic éditor puis je copie le code (dans
feuille 1) ' => faux, il faut coller dans un module Outils/macro/visual basic éditor /insertion/module



fais un essai avec ce code :

remarque : mes paramèttres régionaux sont en point, aussi j'écris une ligne pour transformer virgules en points, sinon je n'ai pas de graphe. Si tu es en points, tu retires la procédure '----------transforme le ',' en '.'
Range('A15:B15').Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=',', Replacement:='.', LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False



Sub Macro2()

'le code est collé dans un module (insertion/module)
'il va chercher le fichier .txt dans C:\\hosto

'--------cherche le fichier texte 5MLFILTRé_et_rééchantilloné------
Workbooks.OpenText Filename:='C:\\hosto\\5MLFILTRé_et_rééchantilloné.txt', _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1))
Range('A1:B1').Select
Range(Selection, Selection.End(xlDown)).Select
'copie des données dans Macro Déglutition à partir du classeur temporaire
Selection.Copy

Windows('Macro Déglutition.xls').Activate
Cells(15, 1).Select
ActiveSheet.Paste
'----------transforme le ',' en '.'
Range('A15:B15').Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=',', Replacement:='.', LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
'---------construction du graphe---------
Charts.Add
ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
'Courbes à deux axes'
ActiveChart.SetSourceData Source:=Sheets('Feuil1').Range('A15:B343')
ActiveChart.Location Where:=xlLocationAsObject, Name:='Feuil1'
ActiveChart.SeriesCollection(2).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlCircle

.MarkerSize = 2
End With
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlCircle

.MarkerSize = 2

End With
Range('A15').Select
'----fermeture du claseur(temporaire)des données sources----
Windows('5MLFILTRé_et_rééchantilloné.txt').Activate
ActiveWindow.Close

Cells(15, 1).Select
End Sub

albert
[file name=hosto.zip size=33011]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/hosto.zip[/file]
 

Pièces jointes

  • hosto.zip
    32.2 KB · Affichages: 20

Mikael

XLDnaute Nouveau
Bonjour G. David, Albert,

Un grand merci à vous deux de m'avoir aider, c'est vraiment très sympa de votre part de faire partager vos connaissances sur Excel.

J’ai passé ces 3 derniers jours à comprendre le code en visual basic généré pour peaufiner la macro.
Je vous tiens au courant de l’avancement de cette macro : j’ai trouvé un moyen pour définir automatiquement la taille de la zone graphique, j’étais content de moi…
Vous savez, la série de chiffre qui s’inscrit à gauche de la feuille Excel, je voulais la décaler à la cellule A100 (pour ne pas qu’elle soit imprimer sur le compte rendu de l’examen car elle n’est pas utile), j’y suis arrivé mais le graphe se décale aussi ! Le graphe se retrouve au même niveau que la série de chiffres…je fais essayer de trouver par moi-même…

Par contre, je n’arrive pas à renommer « série 1 » et « série 2 » sur le graphique. Le code correspondant y est mais il me transcrit un bug…Je vous laisse mon fichier en fichier joint. ( il est à mettre directement dans c: )

Sinon, il me reste une dernière chose à faire pour terminer cette macro. Je vais essayer de trouver par moi-même et si j’ai des soucis, je vous en parlerais.

A bientôt et encore merci.

Ps : Merci Albert pour ton fichier

Mikael
[file name=hopital.zip size=19092]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/hopital.zip[/file]
 

Pièces jointes

  • hopital.zip
    18.6 KB · Affichages: 13

albert

XLDnaute Occasionnel
il semble que l'on ne puisse plus envoyer de pj???
j'envoie le code :

Sub Macro2()
'
'Analyse_de_la-déglutition
'Affichage des courbes du mouvement du larynx et de l'EMG du muscle myohoïde et mesure des intervalles de temps 0-F, 0-2, A-0 et A-C
'
'Touche de raccourci du clavier: Ctlr+Maj+D
'le code est collé dans un module (insertion/module)

On Error Resume Next
Sheets('Feuil1').Activate
ActiveSheet.ChartObjects(1).Delete
'-------------------

Range('A100:B100').Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents

'-----Importation des données issues du fichier 'donnees.txt' provenant du répertoire 'C:\\hopital'-----

Workbooks.OpenText Filename:='C:\\hopital\\donnees.txt', _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1))
Range('A1:B1').Select
Range(Selection, Selection.End(xlDown)).Select

'-----Copie des données dans Macro Déglutition à partir du classeur temporaire-----

Selection.Copy
Windows('Macro Déglutition.xls').Activate
Cells(100, 1).Select
ActiveSheet.Paste

'-----Remplace les '.' par des ',' des données numériques provenant du fichier donnees.txt-----

Range('A100:B100').Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=',', Replacement:='.', LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Windows('Macro Déglutition.xls').Activate
'-----construction du graphe permettant l'affichage des deux courbes-----
Set Plage = Range(Cells(100, 1), Cells(100, 2).End(xlDown)) 'définit une plage variable de sources graphiques
'
Set graphe = Worksheets('Feuil1').ChartObjects.Add(1, 168, 400, 220)
'décale à gauche et vers le bas
With graphe.Chart
.SetSourceData Worksheets('Feuil1').Range('A100', Range('B100').End(xlDown))

ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
'Courbes à deux axes'
ActiveChart.Location Where:=xlLocationAsObject, Name:='Feuil1'
'----------------coloration du graphe en bleu-----------

.ChartArea.Interior.ColorIndex = 34
.PlotArea.Interior.ColorIndex = 8
.PlotArea.Width = 500
.PlotArea.Height = 500

End With

'-----Titre de l'axe des abscisses et des ordonnées-----
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
With ActiveChart
.ChartTitle.Characters.Text = 'Analyse de la déglutition'
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = 'Nombre de points'
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = 'Amplitude (en Volt)'
'----------type de graphique en courbes----------
ActiveSheet.ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).ChartType = xlLine
ActiveChart.SeriesCollection(2).Select
ActiveChart.SeriesCollection(2).ChartType = xlLine
'--------format de la légende-----------
End With
ActiveSheet.ChartObjects(1).Activate
ActiveChart.Legend.Select
Selection.AutoScaleFont = True
Selection.Font.Size = 8
'---pace de la légende-------
ActiveChart.Legend.Select
Selection.Left = 500
Selection.Top = 1
ActiveWindow.Visible = False
'-----Titre des deux courbes-----
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Name = 'Mouvement du larynx'
ActiveChart.SeriesCollection(2).Name = 'EMG du muscle myohoïde'
'-------dimension graphique-----------
'------------------dimension----------
ActiveChart.ChartArea.Select
ActiveSheet.Shapes(2).ScaleWidth 1.68, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes(2).ScaleHeight 1, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes(2).ScaleHeight 1.2, msoFalse, _
msoScaleFromTopLeft
Range('A1').Select
Range('A15').Select
'-----------positionne l'axe des x--------------
ActiveSheet.ChartObjects(1).Activate
ActiveChart.Axes(xlCategory).Border.Weight = xlHairline
ActiveChart.Axes(xlCategory).MajorTickMark = xlNone
ActiveChart.Axes(xlCategory).MinorTickMark = xlNone
ActiveChart.Axes(xlCategory).TickLabelPosition = xlLow
ActiveWindow.Visible = False '--déselectionne le graphe

Cells(15, 1).Select
'-----fermeture du claseur temporaire des données sources-----

Windows('donnees.txt').Activate
ActiveWindow.Close


End Sub
 

albert

XLDnaute Occasionnel
je viens de m'apercevoir qu'il y avait des accents dans l'intitulé du zip...

:whistle: [file name=hopital_20050704124211.zip size=32856]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/hopital_20050704124211.zip[/file]
 

Pièces jointes

  • hopital_20050704124211.zip
    32.1 KB · Affichages: 16

Mikael

XLDnaute Nouveau
Bonjour Albertl, G. David,

Merci à toi Ablert pour le code que tu me fournit ainsi qu'a ton fichier Zip.
Je vais le bosser aujourd'hui à mon stage pour mieux le comprendre et mieux l'intégrer...
Il ne restera qu'une dernière chose à faire mais je vais essayer de me débrouiller. Si j'ai des problèmes, je vous en parlerais.
Merci à vous 2 de m'avoir si gentillement aider.
Je vous tiens au courant de l'avancement de cette macro.

A très bientot et bonne journée

Mikael

PS c'est rare de nos jours les gens comme vous, qui prennent autant de temps pour aider les autres...c'est assez rare pour être souligné!
 

Mikael

XLDnaute Nouveau
Bonjour Albert, G. David,

J'ai beaucoup bossé sur le code la semaine dernière mais je remarque que j'ai du mal...

Albert, dans le fichier que tu m'as passé, l'ampitude de la courbe nommée 'EMG du muscle myohoïde' est très faible et de ce fait n'est pas très exploitable. Pourtant, c'est une courbe à deux axes qui a été sélectionnée...j'avous ne pas comprendre ce qui ne vas pas.
(j'ai mis le code en commentaire dans le fichier joint)

Si vous aviez une idée pour mesurer un intervalle de temps (un delta) pour chacunes des deux courbes à l'aide de clicks gauche de souris par exemple et d'afficher la valeur de ce delta sur une cellule, n'hésitez pas :)
J'y ais réfléchit la semaine dernière mais je ne vois pas comment faire...

A bientot et merci encore de m'avoir tant aider.

Mikael [file name=hopital_20050711113855.zip size=40820]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/hopital_20050711113855.zip[/file]
 

Pièces jointes

  • hopital_20050711113855.zip
    39.9 KB · Affichages: 19

G.David

XLDnaute Impliqué
Salut
J'ai un petit soucis je viens de faire un tour sur le telechargement un fichier que j'avais placé (et paumé depuis ) j'y ai découvert un commentaire d'un Michael Fauchard (sigma) or le seul Michael sur le sit et ici est toi qui m'a laissé ce commentaire sur le 'suivi de plan d'action' ?
Cordialement
G.David
 

Discussions similaires

Réponses
1
Affichages
213

Statistiques des forums

Discussions
312 320
Messages
2 087 226
Membres
103 497
dernier inscrit
JP9231