Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2496 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Tracer à partir des données d'un fichier texte contenu dans une variab

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tracer à partir des données d'un fichier texte contenu dans une variab

n°1404053
jagwar
Posté le 10-07-2006 à 16:58:52  profilanswer
 

:hello: c'est encore moi !! dur dur le VB au début (j'espère que c'est seulement au début  :pt1cable: )
 
Je cherche à tracer automatiquement un graphe à partir d'un nom de fichier contenu dans une variable !
Les données : le nombre est variable de 500 à plus de 2000 lignes contenus dans les colonnes A et B.
 
Sans vraible celà donne :
    Charts.Add
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SetSourceData Source:=Sheets("sed1507_" ).Range("D3" )
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = "=sed1507_!C1"
    ActiveChart.SeriesCollection(1).Values = "=sed1507_!C2"
    ActiveChart.Location Where:=xlLocationAsObject, Name:="sed1507_"
 
Mais avec la variable cela ne fonctionne plus :
 
    Charts.Add
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SetSourceData Source:=Sheets(ActiveSheet.Name).Range("D3" )
    ActiveChart.SeriesCollection.NewSeries
  '  ActiveChart.SeriesCollection(1).XValues = "=sed1507_!C1" je ne vois pas comment faire celà avec une var ??
  '  ActiveChart.SeriesCollection(1).Values = "=sed1507_!C2"  je ne vois pas comment faire celà avec une var ??
    ActiveChart.Location Where:=xlLocationAsObject, Name:=ActiveSheet.Name
 
J'ai aussi essayé (cela crée bien le graphe mais il ne contient pas les bonnes données)
 
 Sub aff_graphe_cours()
Dim MonGraphe As Chart, MaPlage As Range
 
Set MaPlage = Worksheets(ActiveSheet.Name).Range(Cells(1000, 2), Cells(1000, 1))
Set MonGraphe = ThisWorkbook.Charts.Add
MonGraphe.ChartType = xlXYScatter
MonGraphe.SetSourceData MaPlage, xlColumns
 
End Sub
 

mood
Publicité
Posté le 10-07-2006 à 16:58:52  profilanswer
 

n°1404057
jpcheck
Pioupiou
Posté le 10-07-2006 à 17:05:50  profilanswer
 

tu cherches à mettre quoi dans ta variable ? des range ?
tu veux passer par un fichier, mais où interivendrait-il ?
cells(1000,2) te donnera B1000, ni C1 ni C2...
peux-tu expliciter ton pb un peu plus stp ? qu'attends tu de nous pour t'aider ?

n°1404071
jagwar
Posté le 10-07-2006 à 17:11:16  profilanswer
 

Je me suis mal exprimé : "sed1507_" est ma variable que je peux rapeller avec ActiveSheet.Name, et c'est aussi le nom du fichier "sed1507_.xls" Tu as raison mon Range déconne (je ne comprends pas trop à quoi sert range) mais ce qui est important c'est :
    ActiveChart.SeriesCollection(1).XValues = "=sed1507_!C1"
    ActiveChart.SeriesCollection(1).Values = "=sed1507_!C2"
 
Mon code complet est (la partie en gras ne fonctionne pas celle qui est sensée tracer un graphe) :  
Private Sub CommandButton1_Click()
 
 
  With Application.FileSearch
'D abord réinitialiser les critères (Attention : Le LookIn ne se réinitialise pas comme ça)
    .NewSearch
'Pour mettre à jour la liste des dossiers, au cas ou on viendrait de créer un nouveau dossier par VBA :
'    .RefreshScopes
'Dossier(s) de recherche :
    .LookIn = ActiveWorkbook.Path
   ' "C:\Documents and Settings\Jagwar\Bureau\stage IUEM\etalons mis ss la nvelle forme\ex\Fichiers excel"
'Fichiers à rechercher (J'ai essayé plusieurs formes "a*.php;C*.*" mais ça ne marche pas:
'.FileName = "*.*" recherche tous les fichiers
'.Filename = "C.php" recherche tous les fichiers qui contiennent c ou C quelque par dans leur nom, et qui se terminent par .php ou .PHP
    .Filename = "*_.xls"
'Le type de fichiers qu'on recherche. Ici, tous, et de toute façon, on a déjà filtré avec .FileName. Mais on peut par exemple indiquer msoFileTypeExcelWorkbooks qui va extraire tous les fichiers Excelé (XLA, XLT, XLS, XLW)
    .FileType = msoFileTypeAllFiles
'Tous les fichiers créés ou modifiés cette semaine :
 '   .LastModified = msoLastModifiedThisWeek
'On va rechercher dans les sous dossiers d'atelier et Toto :
'    .SearchSubFolders = True
'C est parti :
    .Execute
'Une boucle traditionnelle pour parcourir les fichiers trouvés. FoundFiles(Ctr) n'a pas de propriétés. Par exemple, pas question d'avoir le nom du fichier sans le dossier, ou même sa date de création (en tout cas par la méthode FoundFiles)
    For Ctr = 1 To .FoundFiles.Count
      Cells(Ctr, 1) = .FoundFiles(Ctr)
      Workbooks.OpenText Filename:=.FoundFiles(Ctr), Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
        :=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:= _
        False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array( _
        1, 1), Array(2, 1))
Charts.Add
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SetSourceData Source:=Sheets(ActiveSheet.Name).Range("D3" )
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = ActiveSheet.Name!C1 'concatener les 2 ?
    ActiveChart.SeriesCollection(1).Values = ActiveSheet.Name!C2 'concatener les 2 ?
    ActiveChart.Location Where:=xlLocationAsObject, Name:=ActiveSheet.Name

    Next
  End With
   
End Sub

Message cité 1 fois
Message édité par jagwar le 10-07-2006 à 17:18:48
n°1404076
jpcheck
Pioupiou
Posté le 10-07-2006 à 17:16:39  profilanswer
 

jagwar a écrit :

Je me suis mal exprimé : "sed1507_" est ma variable que je peux rapeller avec ActiveSheet.Name, et c'est aussi le nom du fichier "sed1507_.xls" Tu as raison mon Range déconne (je ne comprends pas trop à quoi sert range) mais ce qui est important c'est :
    ActiveChart.SeriesCollection(1).XValues = "=sed1507_!C1"
    ActiveChart.SeriesCollection(1).Values = "=sed1507_!C2"


a ce moment passe par un  
ActiveChart.SeriesCollection(1).Values = Activeworkbook.Name &"_!C1"  
non ?

n°1404080
jagwar
Posté le 10-07-2006 à 17:19:17  profilanswer
 

arf merci je vais essayer !

n°1404084
jagwar
Posté le 10-07-2006 à 17:24:04  profilanswer
 

En fait celà plante déjà ici : ActiveChart.SetSourceData Source:=Sheets(ActiveSheet.Name).Range("D3" )  
 
Sheets(ActiveSheet.Name) semble ne pas fonctionner !

n°1404088
jpcheck
Pioupiou
Posté le 10-07-2006 à 17:33:18  profilanswer
 

simplifie par ActiveChart.SetSourceData Source:=ActiveSheet.Name.Range("D3" )  
après, je ne suis pas sûr que le seul D3 suffise pour ton datasource
 

n°1404092
jagwar
Posté le 10-07-2006 à 17:37:27  profilanswer
 

En fait j'ai fais un mode enregistrement sur un fichier que j'essaye de généraliser. donc le D3 je ne sais pas trop d'où il viens ! sur un autre essai le range est : Range("A1:B1400" )
Cela ne fonctionne pas sur ça : ActiveChart.SetSourceData Source:=ActiveSheet.Name.Range("D3" )  
erreur 424, objet requis ???


Message édité par jagwar le 10-07-2006 à 18:09:02
n°1404118
jpcheck
Pioupiou
Posté le 10-07-2006 à 18:08:43  profilanswer
 

oups, regarde avec  
 ActiveChart.SetSourceData Source:=ActiveSheet.Range("D3" )  

n°1404392
Paul Hood
Posté le 11-07-2006 à 10:07:34  profilanswer
 

ActiveChart retourne la feuille "Graphique" que tu viens de créer. Et ActiveSheet retourne aussi le nom de la feuille "Graphique".
 
La collection Sheets contient tous les onglets de ton classeur. (graphe et feuille)
La collection Worksheets ne contient que les feuilles de ton classeur
 
Il faut donc que tu conserves le nom de ta feuille avant de créer ton graph
VarFeuille=activesheet.name
après tu créés ton graphe et puis
ActiveChart.SetSourceData Source:=Sheets(VarFeuille).Range("D3" )


Message édité par Paul Hood le 11-07-2006 à 10:10:30
mood
Publicité
Posté le 11-07-2006 à 10:07:34  profilanswer
 

n°1404628
jagwar
Posté le 11-07-2006 à 14:30:22  profilanswer
 

Merci ça fonctionne maintenant c'est la ligne :
ActiveChart.SeriesCollection(1).Values = VarFeuille & "_!C2"
erreur d'execution 1004
Impossible de définir la proprité values dans la classe series
Pourtant la ligne :
ActiveChart.SeriesCollection(1).XValues = VarFeuille & "_!C1"
passe bien ?????

n°1404635
jpcheck
Pioupiou
Posté le 11-07-2006 à 14:37:14  profilanswer
 

ton attribut values ne doit-il pas s'appliquer à un autre élément de ton chart ?
l'attribut Xvalues n'est pas le même que Values donc ca explik le bug, après je ne connais pas tous les attributs de SeriesCollection..

n°1404653
jagwar
Posté le 11-07-2006 à 14:54:47  profilanswer
 

je pense aussi que l'attribut values ne doit pas s'appliquer à cet élément de chart, mais je ne fais que reprendre que ce que le code a généré :
    ActiveChart.SeriesCollection(1).XValues = "=sed1503_!C1"
    ActiveChart.SeriesCollection(1).Values = "=sed1503_!C2"
avec sed103_ le nom de la feuille contenant les données !

n°1404669
jagwar
Posté le 11-07-2006 à 15:10:15  profilanswer
 

En fait ce code fonctionne :  
    ActiveChart.SeriesCollection(1).XValues = "=" & VarFeuille & "!C1"
    ActiveChart.SeriesCollection(1).Values = "=" & VarFeuille & "!C2"
 
 :bounce: !! MERCI BEAUCOUP A VOUS TOUS !!! :bounce:  :hello:
surtout à jpcheck et à Paul Hood


Message édité par jagwar le 11-07-2006 à 15:11:42

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Tracer à partir des données d'un fichier texte contenu dans une variab

 

Sujets relatifs
Access:extraire des données à partir de HTMLfichier le plus récent en dos/windows
< texte > ok pour un menu[MSSql] Type de données nvarchar
Lecture d'un fichier ini vs lecture dans la bddLegers decalage a partir de 1280*1024
[TROUVE ] convertisseur de nombre en texte[SHELL BATCH] Aide sur traitement de fichier de log
Recupérer une URL a partir d'une autre qui y pointe par redirection? 
Plus de sujets relatifs à : Tracer à partir des données d'un fichier texte contenu dans une variab


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR