Macro qui ne marche plus sous Excel2007

Macro qui ne marche plus sous Excel2007 - VB/VBA/VBS - Programmation

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.

Reply

Marsh Posté le 19-08-2009 à 14:13:06   

Reply

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

Reply

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

Reply

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

Reply

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.  :bounce:  
 
Merci à tous pour votre aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed