[VBA] Forcer un Debug incohérent

Forcer un Debug incohérent [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 25-08-2010 à 12:38:52    

Bonjour à tous, ma question concerne un problème sous VBA :  
 
En créant un TCD, il me sort une erreur 1004 : "Référence non valide". Seulement, cette erreur n'est pas bloquante. Je reclique sur éxécuter, et il éxecute le code correctement (et je suppose qu'il repasse sur la portion "bugguée", cette fois avec succès).  
Le truc, c'est que des programmes avec des TCD, j'en ai des centaines, et tous construits pareils. Et j'ai ce bug nul par ailleurs, juste ici.  
Ci-dessous : un code qui ne bug pas, et celui qui bug.
 
Pas de bug :  
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Feuil1!R1C1:R" & nbline & "C" & nbcol).CreatePivotTable TableDestination:= _
        "'tableau age'!R1C1", TableName:= _
        "Tableau croisé dynamique", DefaultVersion:=xlPivotTableVersion10
 
Bug :  
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Feuil1!R1C1:R" & nbline & "C" & nbcol).CreatePivotTable TableDestination:= _
        "'tableau anc'!R1C1", TableName:= _
        "Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
 
 
Ma question est donc : y a t-il un moyen de forcer le debug ? J'ai essayé avec toutes les variantes de "On error...", ça ne marche pas. Ou y a t-il une correction à apporter à mon code pour qu'il fonctionne à tous les coups, et non pas seulement quand il veut.  
 
Merci d'avance !

Reply

Marsh Posté le 25-08-2010 à 12:38:52   

Reply

Marsh Posté le 25-08-2010 à 13:54:03    

Hello,
 
l'erreur peut provenir des variables nbline et nbcol si elles sont égales à 0.
 
sinon pour ignorer toute erreur qui peut rsurvenir : "On Error Resume Next" avant la procédure qui bug.
 
si tu traiter l'erreur : "On Error Goto ..." mais la faudra penser a finir par un "Resume" pour que si le code plante plus tard, qu'il repasse par le traitement de l'erreur.

Reply

Marsh Posté le 25-08-2010 à 14:21:04    

Nbline et nbcol ne sont pas égales à 0. Grosso modo, c'est un copié collé d'un programme précédent, que j'ai adapté : le premier sort des graphiques d'âge (pas de bug) et le deuxième d'ancienneté (bug). Mais nbline et nbcol sont les mêmes dans les deux programmes. Qui plus est, si elles étaient égales à 0, l'erreur serait "bloquante".  
 
On error resume next ne marche pas, car le code "buggé" ne s'execute pas, alors qu'il doit l'être (si il ne s'execute pas, le TCD ne se créé pas).  
On error goto ... resume next, ne marche pas non plus, ça me fait exactement la même chose que si je ne l'avais pas mis.  
 
Ce qui est vraiment bizarre dans mon problème, c'est que sur "100" TCD construits pareils, il y en a que 1 qui bug. Et qui ne bug pas vraiment en fait, psk l'erreur n'est pas bloquante.

Reply

Marsh Posté le 26-08-2010 à 10:09:03    

Salut,
 
  Pour forcer le debug, tu peux coller un point d'arret (en cliquant dans la marge, juste avant la ligne suspecte, puis faire du pas à pas par F8.
 
  Tu peux aussi afficher le contenu de tes variables par la methode debug.print. Le résultat s'affiche dans la fenetre execution (CTRL-G).

Reply

Sujets relatifs:

Leave a Replay

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