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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro qui ne marche plus sous Excel2007

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro qui ne marche plus sous Excel2007

n°1916617
gled2006
Posté le 19-08-2009 à 14:13:06  profilanswer
 

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.

mood
Publicité
Posté le 19-08-2009 à 14:13:06  profilanswer
 

n°1916815
Thierry_94
Posté le 19-08-2009 à 18:51:44  profilanswer
 

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

n°1917001
gled2006
Posté le 20-08-2009 à 11:12:08  profilanswer
 

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

n°1917011
gled2006
Posté le 20-08-2009 à 11:32:05  profilanswer
 

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

n°1917322
gled2006
Posté le 21-08-2009 à 12:19:26  profilanswer
 

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.


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

  Macro qui ne marche plus sous Excel2007

 

Sujets relatifs
Executer macro d'un fichier dans un autremacro insertion lignes dans deux feuilles
[Résolu] Macro - Importation .csv en UTF-8Création fichier log retraçant le déroulement d'une macro
Problème dans une macro devant faire un triCatcher une alerte dans une macro excel
Macro Excel : tableau dynamiqueBouton Excel associé à une macro
problème de filtre vba macro ExcelEcrire dans le code d'une feuille par macro
Plus de sujets relatifs à : Macro qui ne marche plus sous Excel2007


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