Macro qui ne marche plus sous Excel2007 - VB/VBA/VBS - Programmation
Marsh Posté le 19-08-2009 à 18:51:44
Bonjour,
Pourquoi utiliser cette syntaxe avec 1 seule cellule ?
"Sheets("PARAM" ).Range(Cells(n, 27), Cells(n, 27)).Value"
et ne pas mettre directement
"Sheets("PARAM" ).Cells(n, 27).Value"
La source du problème est peut être là !
Cdlt,
Thierry
Marsh Posté le 20-08-2009 à 11:12:08
Bonjour,
Merci pour la réponse, ça à l'air de marcher maintenant. Pour être honnête, ce n'est pas moi qui ai créer ce fichier, mais la personne est désormais partie et je n'y connais presque rien en VBA.
Pourquoi la feuille marche sous Excel 2000 et pas 2007?
Maintenant le problème est déplacé à la création d'un graphe:
J'ai de nouveau une erreur 1004 - la methode 'location' de l'objet '_chart' a échoué. Voici la macro en question:
'Chart creation
Charts.Add
ActiveChart.Location where:=xlLocationAsNewSheet, Name:="CHART"
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("PARAM" ).Range("AA" & 1 & ":AD" & n), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Delete
'Humidity curve
ActiveChart.SeriesCollection(1).Name = "Humidity"
'VHP Conc curve
ActiveChart.SeriesCollection(2).Name = "VHP Conc."
'Max allowable VHP curve
ActiveChart.SeriesCollection(3).Name = "Max allowable VHP"
'border
ActiveChart.ChartArea.Border.Color = RGB(255, 255, 255)
'backcolor
ActiveChart.PlotArea.Interior.Color = RGB(255, 255, 255)
'legend
ActiveChart.Legend.Position = xlLegendPositionBottom
ActiveChart.Legend.Border.Color = RGB(255, 255, 255)
ActiveChart.SeriesCollection(1).AxisGroup = xlSecondary
ActiveChart.SeriesCollection(1).MarkerStyle = None
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
.Color = RGB(0, 0, 255)
End With
ActiveChart.SeriesCollection(2).MarkerStyle = None
ActiveChart.SeriesCollection(2).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
.Color = RGB(255, 0, 0)
End With
ActiveChart.SeriesCollection(3).MarkerStyle = None
ActiveChart.SeriesCollection(3).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
.Color = RGB(51, 153, 51)
End With
If Sheets("PARAM" ).CheckBox1.Value = True Then
ActiveChart.SeriesCollection(1).MarkerStyle = xlMarkerStyleCircle
ActiveChart.SeriesCollection(1).MarkerBackgroundColor = RGB(0, 0, 255)
ActiveChart.SeriesCollection(1).MarkerSize = 4
ActiveChart.SeriesCollection(2).MarkerStyle = xlMarkerStyleSquare
ActiveChart.SeriesCollection(2).MarkerBackgroundColor = RGB(255, 0, 0)
ActiveChart.SeriesCollection(2).MarkerSize = 4
ActiveChart.SeriesCollection(3).MarkerStyle = xlMarkerStyleTriangle
ActiveChart.SeriesCollection(3).MarkerBackgroundColor = RGB(51, 153, 51)
ActiveChart.SeriesCollection(3).MarkerSize = 4
Else: GoTo Y
End If
Y: With ActiveChart
.HasTitle = True
.ChartTitle.Font.Bold = True
.ChartTitle.Font.Size = 12
.ChartTitle.Characters.Text = Sheets("PARAM" ).[L1] & Chr(13) & "Min. Chamber Temperature: " & Sheets("PARAM" ).[A22] & "°C"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (min)"
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Size = 10
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Bold = True
With .Axes(xlCategory)
.MinimumScale = 0
.MaximumScale = Sheets("PARAM" ).[A4] + Sheets("PARAM" ).[A8] + Sheets("PARAM" ).[A12] + Sheets("PARAM" ).[A16]
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlCustom
.CrossesAt = 0
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "VHP Concentration (mg/L)"
.Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 10
.Axes(xlValue, xlPrimary).AxisTitle.Font.Bold = True
.Axes(xlValue, xlSecondary).HasTitle = True
.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text = "Relative Humidity (%)."
.Axes(xlValue, xlSecondary).AxisTitle.Orientation = 90
.Axes(xlValue, xlSecondary).AxisTitle.Font.Size = 10
.Axes(xlValue, xlSecondary).AxisTitle.Font.Bold = True
End With
If Sheets("PARAM" ).DispT.Value = False Then
ActiveChart.ChartTitle.Characters.Text = Sheets("PARAM" ).[L1]
End If
Marsh Posté le 20-08-2009 à 11:32:05
Je viens de plus ou moins résoudre le problème ci dessus. En enlevant NAME:="CHART", le programme me fais une nouvelle feuille, ce qui me va très bien.
En revanche il plante maintenant sur la ligne suivante:
.ScaleType = xlLinear
avec le message : la méthode 'ScaleType' del'objet 'Axis' à échoué
C'est vraiment à devenir chèvre ce truc
Marsh Posté le 21-08-2009 à 12:19:26
Ca y est j'ai trouvé la solution.
En fait ScaleType est definit par défaut en Linéaire. Il suffit donc d'enlever la ligne de code plus DisplayUnit en dessous et le tour est joué. En tout cas ça marche maintenant.
Merci à tous pour votre aide.
Marsh Posté le 19-08-2009 à 14:13:06
Bonjour,
Voici qque temps j'ai créer une feuille de calcul qui utilise des macros sous Excel 2000. Tout fonctionne parfaitement, mais je viens de passer à office 2007 et cette feuille de ne marche plus. Dès que je la lance, j'ai le message suivant: Erreur d'exécution '1004' l'élément portant ce nom est introuvable. Lorsque je lance le debogage, j'ai une ligne en dessous de 'Time surlignée en jaune. Voici la macro
L:
'dehumidify cycle
START = 0
FIN = Sheets("PARAM" ).[A4]
n = 1
Do
Sheets("MACRO" ).[B13].Value = START
'Time
Sheets("PARAM" ).Range(Cells(n, 27), Cells(n, 27)).Value = Sheets("MACRO" ).[B13]
'Humidity
Sheets("PARAM" ).Range(Cells(n, 28), Cells(n, 28)).Value = Sheets("MACRO" ).[D16]
n = n + 1
START = START + Sheets("PARAM" ).[A26]
Loop Until START = FIN + 1
QQu'un aurait il une idée pour corriger le problème? Pourquoi microsoft utilise des VBA non compatible d'une version d'office à une autre?
Merci d'avance pour votre aide.