Code erreur VBA lors de la génération d'un graph

Bonjour tout le monde et mes meilleurs vœux,

J'obtiens un code erreur lors de la génération d'un graphique que je ne comprend pas :

Erreur d'exécution '-2147024809 (80070057)': Cet objet n'a pas de titre,

Qui arrive sur la ligne

   .ChartTitle.Characters.Text = Title

Mon code :

Sub CreerGraph2(Titre As String, Tableau As String, Compagnie As String, Cle As Integer, W As String)

'Titre = "Titre à donner au graphique"
'Tableau = "Le nom du tableau contenant les données à tracer"
'Compagnie = "Le nom de la compagnie concernée"
'Cle = "La position de la compagnie dans la liste des compagnies"
'W = "La colonne désignant la compagnie à stater et ses objectifs, sur la feuille résultat"

Dim NbGraph As Integer
Dim Coords As String
Dim MaPlage As String
Dim LigneExpert As String

'On compte le nombre de graphique sur la page pour connaitre la position du graph que l'on va créer
NbGraph = Sheets(Compagnie).ChartObjects.Count

Select Case NbGraph
Case Is = 0
    Coords = "A1"
Case Is = 1
    Coords = "I1"
Case Is = 2
    Coords = "A18"
Case Is = 3
    Coords = "I18"
Case Is = 4
    Coords = "A35"
Case Is = 5
    Coords = "I35"
Case Is = 6
    Coords = "A48"
Case Is = 7
    Coords = "D48"
End Select

'Création du graphique
Charts.Add
ActiveChart.Location _
where:=xlLocationAsObject, name:=Compagnie

Dim Title As String

If Sheets("Résultats").Range(W & "15").Value = "" Then
    Title = Titre & " - Autre(s) compagnie(s)"
    With ActiveChart
    '[#ALL] c'est pour que les en-têtes de Tableau soient prisent en compte
    .SetSourceData Source:=Sheets("Recap").Range(Tableau & "[#ALL]"), PlotBy:=xlRows
    .ChartType = xlLine
    .HasTitle = True
    .ChartTitle.Characters.Text = Title ' =>=>=>=> C'est la ligne qui génère l'erreur <=<=<=<=<=
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .PlotArea.Interior.ColorIndex = 2
    .Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
    .ChartArea.Font.Size = 10
    End With

Else
    Title = Titre & " - " & Sheets("Résultats").Range(W & "15").Value
    With ActiveChart
    '[#ALL] c'est pour que les en-têtes de Tableau soient prisent en compte
    .SetSourceData Source:=Sheets("Recap").Range(Tableau & "[#ALL]"), PlotBy:=xlRows
    .ChartType = xlLine
    .HasTitle = True
    .ChartTitle.Characters.Text = Title
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .PlotArea.Interior.ColorIndex = 2
    .Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
    .ChartArea.Font.Size = 10
    End With
End If

'Placement du graphique
With ActiveSheet.ChartObjects(NbGraph + 1)
.Left = Range(Coords).Left
.Top = Range(Coords).Top
End With

'On supprime les séries de données concernant les autres compagnies afin d'avoir en visuel un graphe individuel
Dim d As Integer
For d = 0 To NbCompagnies - 1
    If d = Cle Then
        ActiveChart.SeriesCollection(2).Delete
    Else:
    If d < Cle Then
        ActiveChart.SeriesCollection(1).Delete
    Else
        ActiveChart.SeriesCollection(2).Delete
    End If
    End If
Next

End Sub

Une petite idée ?

Sachant que j'utilise quasiment le même code, qui fonctionne, dans un autre module.

Code qui fonctionne :

Sub CreerGraph(Titre As String, Tableau As String, Expert As String, Cle As Integer, W As String)

'Titre = "Titre à donner au graphique"
'Tableau = "Le nom du tableau contenant les données à tracer"
'Expert = "Les initiales de l'expert concerné"
'Cle = "La position de l'expert dans la liste des experts"
'W = "La colonne désignant la compagnie à stater et ses objectifs, sur la feuille résultat"

Dim NbGraph As Integer
Dim Coords As String
Dim MaPlage As String
Dim LigneExpert As String

'On compte le nombre de graphique sur la page pour connaitre la position du graph que l'on va créer
If Expert = "" Then
    Expert = "Sans nom"
Else:
    Expert = Expert
End If

NbGraph = Sheets(Expert).ChartObjects.Count

Select Case NbGraph
Case Is = 0
    Coords = "A1"
Case Is = 1
    Coords = "I1"
Case Is = 2
    Coords = "A18"
Case Is = 3
    Coords = "I18"
Case Is = 4
    Coords = "A35"
Case Is = 5
    Coords = "I35"
Case Is = 6
    Coords = "A48"
Case Is = 7
    Coords = "D48"
End Select

'Création du graphique
Charts.Add
ActiveChart.Location _
where:=xlLocationAsObject, name:=Expert
With ActiveChart
'[#ALL] c'est pour que les en-têtes de Tableau soient prisent en compte
.SetSourceData Source:=Sheets("Recap").Range(Tableau & "[#ALL]"), PlotBy:=xlRows
.ChartType = xlLine
.HasTitle = True
.ChartTitle.Characters.Text = Titre & " - " & Sheets("Résultats").Range(W & "15").Value
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.PlotArea.Interior.ColorIndex = 2
.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
.ChartArea.Font.Size = 10
End With

'Placement du graphique
With ActiveSheet.ChartObjects(NbGraph + 1)
.Left = Range(Coords).Left
.Top = Range(Coords).Top
End With

'On supprime les séries de données concernant les autres experts afin d'avoir en visuel un graphe individuel
Dim d As Integer
For d = 0 To NbExperts - 1
    If d = Cle Then
        ActiveChart.SeriesCollection(2).Delete
    Else:
    If d < Cle Then
        ActiveChart.SeriesCollection(1).Delete
    Else
        ActiveChart.SeriesCollection(2).Delete
    End If
    End If
Next
End Sub

Si un spécialiste des erreurs d'exécution passe dans le coin, je suis tout ouïe !

Merci d'avance

Bonjour

Je n'y connais rien mais je pense que Title est un mot réservé par VBA

Remplace Title par Titre2 et fais un essai

C'est juste une supposition, mais si ce n'est pas ça il faudrait joindre le fichier en cause

Bonjour,

Initialement il n'y avait pas de variable Title, mais directement

Titre & " - " & Sheets("Résultats").Range(W & "15").Value

Ça ne vient donc pas du nom donné à la variable hélas.

(Mais je prends note de ton commentaire pour "les bonnes pratiques du code" j'éviterai ce type de nom de variable. Merci)

11donnees.xlsx (56.30 Ko)

Le bug arrive en cliquant sur le bouton "Bilan cabinet"

(Pensez à changer le chemin du fichier de données sur la feuille "Résultats" du fichier "EN COURS..." pour qu'il se lance)

Bonjour

Désolé mais je ne pourrais pas t'aider

J'ai essayé ton programme et bien sur plantage

Mais j'ai déplacé la ligne en cours (le surlignage de la ligne) sur la ligne précédente

.HasTitle = True

et j'ai relancé la macro à partir de cette ligne

le graphique se fait

Plantage , j'ai refait la même chose mais j'ai eu plantage sur une ligne suivante de la même procédure

            Else
        [surligner=#FFFFBF]ActiveChart.SeriesCollection(2).Delete
    End If
    End If
Next

End Sub

Message d'erreur : Erreur d'exécution '1004': Paramètre non valide

Je n'en sais pas plus

J'ai aussi la même succession d'erreur :s

Rechercher des sujets similaires à "code erreur vba lors generation graph"