Bonjour,
je suis nouveau dans ce forum et ceci est ma premiére question.
je dois réaliser des graphiques sur une série de fichiers de données brutes.
ces fichiers ont une extension .dat.
donc en premier j'ouvre un fichier de donnée avec excel et je fais mon graphe manellement, j'obtiens le résuktat excompté.
Comme le nombre de fichier devient important il faut que je fasse une macro,
(en PJ je vous transmets un exemple de fichier excel qui me pose problème.)
donc je dois d'abord delimiter la plage de données qui va servir au graphe.
cette plage est variable en fonction du fichier de donnée, donc il faut que je calcule sa longueur, ce qui donne le code suivant :
si la premiére cellule de la plage selectinnée est vide j' ai une erreur d'execution sur la définition de ma plage zone_graph2
si elle est remplie elle risque de fausser mon graphe
donc je la remplis artificiellement puis je la vide
donc suivant le cas j'ai une erruer 91 ou une erreur 1004.
ça devient dur pour moi
je ne sais pas comment faire pour mettre le fichier complet en PJ
merci pour votre aide
je suis nouveau dans ce forum et ceci est ma premiére question.
je dois réaliser des graphiques sur une série de fichiers de données brutes.
ces fichiers ont une extension .dat.
donc en premier j'ouvre un fichier de donnée avec excel et je fais mon graphe manellement, j'obtiens le résuktat excompté.
Comme le nombre de fichier devient important il faut que je fasse une macro,
(en PJ je vous transmets un exemple de fichier excel qui me pose problème.)
donc je dois d'abord delimiter la plage de données qui va servir au graphe.
cette plage est variable en fonction du fichier de donnée, donc il faut que je calcule sa longueur, ce qui donne le code suivant :
Code:
Option Explicit
Sub create_graph()
Dim C_ori, C_Dest As Range
Dim zone_graph, zone_graph2 As Range
Dim LeGraph As Chart
Dim ligne, i, j, k As Long
Dim ori, dest As String
Dim fiche As String
Dim feuil As Worksheet
'recuperer le nom de la feuille
For Each feuil In Worksheets
fiche = feuil.Name
Next feuil
Worksheets(fiche).Range("A15").Value = "NULL"
ori = Worksheets(fiche).Range("F7").Value
dest = "Axe X " & ori & " gRMS"
Worksheets(fiche).Range("B15").Value = dest
ori = Worksheets(fiche).Range("F8").Value
dest = "Axe Y " & ori & " gRMS"
Worksheets(fiche).Range("C15").Value = dest
ori = Worksheets(fiche).Range("F9").Value
dest = "Axe Z " & ori & " gRMS"
Worksheets(fiche).Range("D15").Value = dest
' récuperer la zone de valeurs pour le graphique
' compter le nombre de lignes
Set zone_graph = Worksheets(fiche).Rows(1)
ligne = 15
Do While (zone_graph.Offset(ligne).Columns(1).Value <> "")
ligne = ligne + 1
Loop
'cette ligne génere l'erreur 1004'
Set zone_graph2 = Worksheets(fiche).Range(Cells(15, 1), Cells(ligne - 1, 4))
' cette ligne est soit gardée soit supprimmée suivant l'erreur
Worksheets(fiche).Range("A15").Value = ""
Set LeGraph = ThisWorkbook.Charts.Add
Set LeGraph = LeGraph.Location(Where:=xlLocationAsNewSheet)
With LeGraph
.SetSourceData zone_graph2, xlColumns
.ChartType = xlXYScatterLinesNoMarkers
.HasTitle = True
.ChartTitle.Characters.Text = fiche
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Fréquences en Hz"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "niveau en g²RMS/Hz"
End With
LeGraph.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False
'grille d'échelle primaire
With LeGraph.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = True
End With
'grille d'échelle secondaire
With LeGraph.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = True
End With
With LeGraph.Axes(xlValue)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlMinimum
.ReversePlotOrder = False
.ScaleType = xlLogarithmic
.DisplayUnit = xlNone
End With
With LeGraph.Axes(xlValue)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlMinimum
.ReversePlotOrder = False
.ScaleType = xlLogarithmic
.DisplayUnit = xlNone
End With
End Sub
si la premiére cellule de la plage selectinnée est vide j' ai une erreur d'execution sur la définition de ma plage zone_graph2
si elle est remplie elle risque de fausser mon graphe
donc je la remplis artificiellement puis je la vide
donc suivant le cas j'ai une erruer 91 ou une erreur 1004.
ça devient dur pour moi
je ne sais pas comment faire pour mettre le fichier complet en PJ
merci pour votre aide