VBA erreur automation lors de création graph

Kouik Kouik jr

XLDnaute Occasionnel
Bonsoir le forum,

J'ai besoin de votre aide car mon code bloque sur une erreur automation (80010108)(L'objet invoqué s'est déconnecté des ses clients)

J'essaie de créer 4 graphiques mais le code ne me crée que le 1er et bloque sur le deuxième avec ce message


Je vois pas du tout mais alors pas du tout ce qui fonctionne pas


Merci de votre coup de pouce:(

HTML:
Sub graph()

'Creation graphique
    
    With ActiveSheet.ChartObjects.Add(Left:=100, Width:=575, Top:=45, Height:=225)
        .Chart.SetSourceData Source:=Sheets("Feuil2").Range("A:A,H:H")
        .Chart.ChartType = xlXYScatterLines
    .Chart.Legend.Select
    Selection.Delete
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart"
    
    End With


    With ActiveSheet.ChartObjects.Add(Left:=100, Width:=575, Top:=300, Height:=225)
        .Chart.SetSourceData Source:=Sheets("Feuil2").Range("A:A,M:M")
        .Chart.ChartType = xlXYScatterLines
    .Chart.Legend.Select
    Selection.Delete
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart"
    
    End With

    With ActiveSheet.ChartObjects.Add(Left:=100, Width:=575, Top:=650, Height:=225)
        .Chart.SetSourceData Source:=Sheets("Feuil2").Range("A:A,N:N")
        .Chart.ChartType = xlXYScatterLines
    .Chart.Legend.Select
    Selection.Delete
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart"
    
    End With
    
    With ActiveSheet.ChartObjects.Add(Left:=100, Width:=575, Top:=900, Height:=225)
        .Chart.SetSourceData Source:=Sheets("Feuil2").Range("A:A,M:M,O:O")
        .Chart.ChartType = xlXYScatterLines
    .Chart.Legend.Select
    Selection.Delete
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart"
    
    End With
  
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

    

End Sub
 

ledzepfred

XLDnaute Impliqué
Re : VBA erreur automation lors de création graph

bonsoir kouik kouik jr

difficile à dire sans données, à première vue je dirais qu'il est impossible de nommer un objet avec un nom déjà utilisé. Dans ton code il y a quatre fois cette instruction :

Code:
ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart"

Essayes en mettant "Chart1", "Chart2" etc...


Autre chose : en fin de code tu mets :
Code:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
C'est totalement inutile puisque ces propriétés repassent en valeur True de manière automatique à l'issue de la procédure (d'autant plus inutile que tu ne les fais pas passer à False en début de code)

Pour terminer on peut faire plus court grâce à une boucle :
Code:
Sub graph()
Dim HAUT As Integer, maplage As Range

Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Creation graphique
For i = 1 To 4
If i = 1 Then HAUT = 45: maplage = Sheets("Feuil2").Range("A:A,H:H")
If i = 2 Then HAUT = 300: maplage = Sheets("Feuil2").Range("A:A,M:M")
If i = 3 Then HAUT = 650: maplage = Sheets("Feuil2").Range("A:A,N:N")
If i = 4 Then HAUT = 900: maplage = Sheets("Feuil2").Range("A:A,M:M,O:O")
    
    With ActiveSheet.ChartObjects.Add(Left:=100, Width:=575, Top:=HAUT, Height:=225)
        .Chart.SetSourceData Source:=maplage
        .Chart.ChartType = xlXYScatterLines
        .Chart.Legend.Select
        Selection.Delete
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart" & i
    End With
Next
End Sub
Pas testé mais ça doit marcher
A+
 
Dernière édition:

Kouik Kouik jr

XLDnaute Occasionnel
Re : VBA erreur automation lors de création graph

Merci ledzepfred mais Je n'arrive pas a utiliser votre code

Il bloque sur la ligne 45: maplage

Je vois vraiment pas pourquoi (je suis tjrs aussi nul en vba)

Une idée pourquoi ?



HTML:
If i = 1 Then HAUT = 45: maplage = Sheets("Feuil2").Range("A:A,H:H")
 

ledzepfred

XLDnaute Impliqué
Re : VBA erreur automation lors de création graph

oups la boulette,

j'ai oublié l'instruction Set : essayes comme ceci

Code:
Sub graph()
Dim HAUT As Integer, maplage As Range

Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Creation graphique
For i = 1 To 4
    With Sheets("Feuil2")
        If i = 1 Then HAUT = 45: Set maplage = .Range("A:A,H:H")
        If i = 2 Then HAUT = 300: Set maplage = .Range("A:A,M:M")
        If i = 3 Then HAUT = 650: Set maplage = .Range("A:A,N:N")
        If i = 4 Then HAUT = 900: Set maplage = .Range("A:A,M:M,O:O")
    End With
    With ActiveSheet.ChartObjects.Add(Left:=100, Width:=575, Top:=HAUT, Height:=225)
        .Chart.SetSourceData Source:=maplage
        .Chart.ChartType = xlXYScatterLines
        .Chart.Legend.Select
        Selection.Delete
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart" & i
    End With
Next
End Sub

Dis-moi si cela fonctionne

A+
 

Discussions similaires

Réponses
1
Affichages
172
Réponses
0
Affichages
155

Statistiques des forums

Discussions
312 316
Messages
2 087 177
Membres
103 491
dernier inscrit
bilg1