Home
Home

---Soumis par Dev Ashish---

Déterminer le nom de la procédure où l'erreur s'est produite.

(Q) J'ai de la difficulté à déterminer, en mode d'exécution, la procédure où s'est produit une erreur; y a-t-il une façon de déterminer le nom de cette procédure, automatiquement, par progammation?

(A) Malheureusement non, VBA ne nous offre pas une propriété ou une méthode à cette fin. Cependant, vous pouvez y parvenir en ajoutant le code approprié. Selon la complexité, vous pouvez construire une pile (stack) sur laquelle vour déposerez et retirerez (push and pop) le nom de la procédure en y entrant et en y sortant, tel que décrit dans le bouquin "Microsoft Access 95 How" par Getz  et Litwin, ou encore, maintenir une variable globale à cette fin. Par exemple, utilisant une variable globale:

Public pstrProcName as string
Public pstrSubProcName as string

Et pour chacune de vos procédure, au début du code, y assigner le nom de la procédure. On peut utiliser pstrSubProcName si la fonction en appelle une autre.

'******************** Code Start ************************
Sub button1_click()
    PstrProcName = "button1_click()"
    Call sShowMsg
    Msgbox pstrProcName
End sub

Sub sShowMsg()
    PstrSubprocName = "sShowMsg"
    Msgbox "You are in procedure: " & pstrSubProcName
End sub
'******************** Code End ************************

Comme vous le constatez, si vous utilisiez  pstrProcName pour maintenir le nom sShowMsg lorsque appelé par button1_click, au retour, le dialogue de message aurait la mauvaise valeur.