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

VBA : Erreur d'exécution '-2147417848 (80010108) - VB/VBA/VBS - Programmation

Marsh Posté le 22-07-2010 à 18:12:42    

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.." ) ..  
 

Code :
  1. Option Explicit
  2. Public mois As String
  3. Public entite As String
  4. Public annee As String
  5. '*******************************************************************
  6. 'Macro générale de création de reporting
  7. 'Date : 13/07/10
  8. 'Dernière update : 13/07/10
  9. 'Auteur : Joel Barenco
  10. '*******************************************************************
  11. Sub macro_go(m As String, a As String, e As String)
  12.     Dim r As Variant
  13.     Dim w As Worksheet
  14.    
  15.     '--------------------------------------------------------------
  16.     'TEMPORAIRE - A ENLEVER
  17.     '--------------------------------------------------------------
  18.    
  19.     mois = m
  20.     entite = e
  21.     annee = a
  22.     '--------------------------------------------------------------
  23.     'Initialisation
  24.     '--------------------------------------------------------------
  25.    
  26.     'On supprime les feuilles déjà créées si on veut lancer plusieurs
  27.     'fois de suite le reporting
  28.     Application.DisplayAlerts = False
  29.     For Each w In Worksheets
  30.     If Not (w.Name = "Accueil" ) Then
  31.        w.Delete
  32.     End If
  33.     Next w
  34.     Application.DisplayAlerts = True
  35.    
  36.     '--------------------------------------------------------------
  37.     'Lancement des sous-macro
  38.     '--------------------------------------------------------------
  39.    
  40.     r = Application.run("Prog.xls!IA.IA" )
  41.     r = Application.run("Prog.xls!Incidents.Incidents" )
  42.     r = Application.run("Prog.xls!FA.FA" )
  43.    
  44.     '--------------------------------------------------------------
  45.     'Mise en forme
  46.     '--------------------------------------------------------------
  47.    
  48.     r = Application.run("Prog.xls!MEP.MEP" )
  49.    
  50.     '--------------------------------------------------------------
  51.     'Création des graphismes
  52.     '--------------------------------------------------------------
  53.    
  54.     r = Application.run("Prog.xls!Graph.Graph" )
  55.    
  56. End Sub


Code :
  1. Option Explicit
  2. Public mois As String
  3. Public entite As String
  4. Public annee As String
  5. '*******************************************************************
  6. 'Macro générale de création de reporting
  7. 'Date : 13/07/10
  8. 'Dernière update : 13/07/10
  9. 'Auteur : Joel Barenco
  10. '*******************************************************************
  11. Sub macro_go(m As String, a As String, e As String)
  12.     Dim r As Variant
  13.     Dim w As Worksheet
  14.    
  15.     '--------------------------------------------------------------
  16.     'TEMPORAIRE - A ENLEVER
  17.     '--------------------------------------------------------------
  18.    
  19.     mois = m
  20.     entite = e
  21.     annee = a
  22.     '--------------------------------------------------------------
  23.     'Initialisation
  24.     '--------------------------------------------------------------
  25.    
  26.     'On supprime les feuilles déjà créées si on veut lancer plusieurs
  27.     'fois de suite le reporting
  28.     Application.DisplayAlerts = False
  29.     For Each w In Worksheets
  30.     If Not (w.Name = "Accueil" ) Then
  31.        w.Delete
  32.     End If
  33.     Next w
  34.     Application.DisplayAlerts = True
  35.    
  36.     '--------------------------------------------------------------
  37.     'Lancement des sous-macro
  38.     '--------------------------------------------------------------
  39.    
  40.     r = Application.run("Prog.xls!IA.IA" )
  41.     r = Application.run("Prog.xls!Incidents.Incidents" )
  42.     r = Application.run("Prog.xls!FA.FA" )
  43.    
  44.     '--------------------------------------------------------------
  45.     'Mise en forme
  46.     '--------------------------------------------------------------
  47.    
  48.     r = Application.run("Prog.xls!MEP.MEP" )
  49.    
  50.     '--------------------------------------------------------------
  51.     'Création des graphismes
  52.     '--------------------------------------------------------------
  53.    
  54.     '*************************************************************
  55.     'TEST
  56.     '*************************************************************
  57.             Dim position As Integer
  58.             Dim p_inci_1 As range
  59.             Dim plage As range
  60.             Dim graph1 As Chart
  61.            
  62.             position = 1
  63.            
  64.             '--------------------------------------------------------------
  65.             'Mise en place des références Range
  66.             '--------------------------------------------------------------
  67.             With wsIncidents
  68.                 Set p_inci_1 = .range(.Cells(3, 3), .Cells(3, 3).End(xlDown)).Resize(, 5)
  69.             End With
  70.            
  71.             '--------------------------------------------------------------
  72.             'Définition du graphique
  73.             '--------------------------------------------------------------
  74.             With ws
  75.                 Set plage = .range(.Cells(7 + position * 56, 2).Address & ":" & .Cells(23 + position * 56, 17).Address)
  76.                 Set graph1 = .ChartObjects.Add(plage.Left, plage.Top, plage.Width, plage.Height).Chart
  77.             End With
  78.             graph1.ChartArea.Clear
  79.             graph1.ChartType = xlXYScatter
  80.            
  81.     '*************************************************************
  82.     '/TEST
  83.     '*************************************************************
  84.    
  85.     'r = Application.run("Prog.xls!Graph.Graph" )
  86.    
  87. End Sub


 
Merci de votre aide !  

Reply

Marsh Posté le 22-07-2010 à 18:12:42   

Reply

Marsh Posté le 23-07-2010 à 10:13:38    

Plusieurs possibilités :
 

  • Problème au niveau de ta variable "plage". Que renvoit plage ?
Code :
  1. With ws
  2.                 Set plage = .range(.Cells(7 + position * 56, 2).Address & ":" & .Cells(23 + position * 56, 17).Address)
  3.                 MsgBox plage.Address


  • Problème au niveau de ta variable "ws". Que renvoit ws ?
Code :
  1. MsgBox ws.name
  2. Set graph1 = .ChartObjects.Add(plage.Left, plage.Top, plage.Width, plage.Height).Chart


Message édité par SuppotDeSaTante le 23-07-2010 à 10:13:50

---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

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