VBA : Erreur d'exécution '-2147417848 (80010108)

Le
jojosbb00
Bonjour,

C'est dans un état de dépression que je viens vous demander de l'aide.

Voici maintenant 2 jours que j'erre sur un problème VBA dont je ne comprends pas la nature.

J'en suis à la fin du développement d'un moyen programme sur VBA qui implique la création de worksheet, l'ouverture d'autres classeurs pour y copier des données et enfin la création de graphiques avec les données ainsi reprises (et en meme temps un peu modifiées).

C'est ce dernier point qui me pose problème. J'ai en effet découper mon programme en plusieurs modules avec chacuns une tâche particulière. Lorsque je joins le dernier module (création de graphiques) aux autres, le programme plante. Si je ne le lance pas en même temps, tout va bien.

L'erreur est : Erreur d'exécution '-2147417848 (80010108)' et le détail : "La méthode 'chartArea de l'objet '_chart' a échoué". La ligne surlignée est :"graph1.ChartArea.Clear" (cf code plus bas)

Par ailleurs, une fois que j'appuie sur "fin" pour quitter la boite de dialogue de l'erreur, il m'est impossible d'aller sur mon classeur Excel qui plante systématiquement. Il faut soit que j'effecture un Ctrl+alt+supr pour fermer et rouvrir le programme, soit que je tente de sauvegarder sous VBA pour qu'un message de Microsoft Excel de plantage me propose d'envoyer un rapport d'erreur à Microsoft et me relance mon Excel.

En me renseignant sur ce type d'erreur, il se pourrait qu'elle ait pour origine un appel à une fonction dejà fermée. Cependant, mon module "graph" ne fait que tracer des graphiques. Il fait bien appel à des worksheet du classeur courant, mais rien de plus. A savoir, qu'il m'arrive de réussir à lancer le module graphique indépendamment.

Pour vous éclaircir sur le fonctionnement global de mon appli. Lorsque j'ouvre mon fichier "prog.xls", il n'y a qu'une feuille "accueil" sur laquelle il y a un bouton CmdButton qui appel un userform (nommé UserForm1) par la fonction : UserForm1.UserForm1_Initialize

Dans cet userform, l'utilisateur renseigne deux trois broutilles dans des textbox et autres combobox avant de lancer l'appli grâce au CmdButton "go" qui appelle la sub du premier module "macro_go".

C'est dans ce module (macro_go) que je lance toutes les autres sub des autres modules. Pour rappel, tout marche bien lorsque je lance toutes les sub sauf celle du module "graph"

Comme test, j'ai pris un bout de code du module graph et je l'ai mis dans mon module macro_go pour tenter d'y voir plus clair. Voici les deux codes de mon module macro_go, le premier normal qui engendre l'erreur d'exécution ; et le deuxième avec le bout de code qui renvoie la même erreur. La ligne surlignée est "graph1.ChartArea.Clear" (cf code plus bas).

A savoir que j'ai mis en variable globale les divers worksheet qui sont appelés dans la macro graphique ("Graph"). L'erreur était la même quand je déclarais les worksheet comme : Set ws = Application.workbook("prog.xls").worksheet("bla bla b..") ..

[cpp]
Option Explicit

Public mois As String
Public entite As String
Public annee As String


'*******************************************************************
'Macro générale de création de reporting
'Date : 13/07/10
'Dernière update : 13/07/10
'Auteur : Joel Barenco
'*******************************************************************

Sub macro_go(m As String, a As String, e As String)

Dim r As Variant
Dim w As Worksheet

'--
'TEMPORAIRE - A ENLEVER
'--

mois = m
entite = e
annee = a

'--
'Initialisation
'--

'On supprime les feuilles déjà créées si on veut lancer plusieurs
'fois de suite le reporting
Application.DisplayAlerts = False
For Each w In Worksheets
If Not (w.Name = "Accueil") Then
w.Delete
End If
Next w
Application.DisplayAlerts = True

'--
'Lancement des sous-macro
'--

r = Application.run("Prog.xls!IA.IA")
r = Application.run("Prog.xls!Incidents.Incidents")
r = Application.run("Prog.xls!FA.FA")

'--
'Mise en forme
'--

r = Application.run("Prog.xls!MEP.MEP")

'--
'Création des graphismes
'--

r = Application.run("Prog.xls!Graph.Graph")

End Sub

[/cpp]
[cpp]

Option Explicit

Public mois As String
Public entite As String
Public annee As String


'*******************************************************************
'Macro générale de création de reporting
'Date : 13/07/10
'Dernière update : 13/07/10
'Auteur : Joel Barenco
'*******************************************************************

Sub macro_go(m As String, a As String, e As String)

Dim r As Variant
Dim w As Worksheet

'--
'TEMPORAIRE - A ENLEVER
'--

mois = m
entite = e
annee = a

'--
'Initialisation
'--

'On supprime les feuilles déjà créées si on veut lancer plusieurs
'fois de suite le reporting
Application.DisplayAlerts = False
For Each w In Worksheets
If Not (w.Name = "Accueil") Then
w.Delete
End If
Next w
Application.DisplayAlerts = True

'--
'Lancement des sous-macro
'--

r = Application.run("Prog.xls!IA.IA")
r = Application.run("Prog.xls!Incidents.Incidents")
r = Application.run("Prog.xls!FA.FA")

'--
'Mise en forme
'--

r = Application.run("Prog.xls!MEP.MEP")

'--
'Création des graphismes
'--

'*************************************************************
'TEST
'*************************************************************
Dim position As Integer
Dim p_inci_1 As range
Dim plage As range
Dim graph1 As Chart

position = 1

'--
'Mise en place des références Range
'--
With wsIncidents
Set p_inci_1 = .range(.Cells(3, 3), .Cells(3, 3).End(xlDown)).Resize(, 5)
End With

'--
'Définition du graphique
'--
With ws
Set plage = .range(.Cells(7 + position * 56, 2).Address & ":" & .Cells(23 + position * 56, 17).Address)
Set graph1 = .ChartObjects.Add(plage.Left, plage.Top, plage.Width, plage.Height).Chart
End With
graph1.ChartArea.Clear
graph1.ChartType = xlXYScatter


'*************************************************************
'/TEST
'*************************************************************

'r = Application.run("Prog.xls!Graph.Graph")

End Sub

[/cpp]

Merci de votre aide !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc
Le #22387021
On Jul 22, 6:12 pm, jojosbb00
Bonjour,



Hello,

Microsoft a officiellement décomissionné ce newsgroup le 30 Juin. En
fait, ils ont décommissionné tous les groupes Usenet de la hiérarchie
microsoft.public.*

Il faut maintenant passer par des forums web. pour le VBA, l'adresse
est:
http://social.msdn.microsoft.com/Forums/fr-FR/vbafr/threads

Cordialement,

Jean-Marc Noury
HD
Le #22523501
Microsoft a officiellement décomissionné ce newsgroup le 30 Juin. En
fait, ils ont décommissionné tous les groupes Usenet de la hiérarchie
microsoft.public.*


Et c'est bien dommage... car il est bien plus pratique et rapide de
consulter un grand nombre de NewsGroup plutôt que des forums...

--
@+
HD
Jean-Marc
Le #22533891
On Aug 31, 8:42 am, "HD"
> Microsoft a officiellement décomissionné ce newsgroup le 30 Juin. E n
> fait, ils ont décommissionné tous les groupes Usenet de la hiérar chie
> microsoft.public.*

Et c'est bien dommage... car il est bien plus pratique et rapide de
consulter un grand nombre de NewsGroup plutôt que des forums...



Je suis bien d'accord, d'autant que NNTP se prête bien à
l'automatisation, contrairement aux forums web ...

A+

JM
Vincent Guichard
Le #22536731
Le 02/09/2010 15:08, Jean-Marc a écrit :
On Aug 31, 8:42 am, "HD"
Microsoft a officiellement décomissionné ce newsgroup le 30 Juin. En
fait, ils ont décommissionné tous les groupes Usenet de la hiér archie
microsoft.public.*



Et c'est bien dommage... car il est bien plus pratique et rapide de
consulter un grand nombre de NewsGroup plutôt que des forums...



Je suis bien d'accord, d'autant que NNTP se prête bien à
l'automatisation, contrairement aux forums web ...

A+

JM


Sans compter que tu peux facilement garder une archive locale des
messages, ce qui est plus difficile sur les forums.

Vincent Guichard
HD
Le #22620761
En tout cas, pour info, le newsgroup microsoft.public.fr.excel fonctionne
toujours... et l'on peut toujours participer aux questions/réponses portant
sur le vba...
--
@+
HD
Publicité
Poster une réponse
Anonyme