Comment eviter le plantage de la procedure quand il n'y a pas de thisworkbook_op

  • Initiateur de la discussion Initiateur de la discussion Creepy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Creepy

Guest
Bonjour all,

Pour effacer ma procedure Workbook_open on m'a donné sur ce forum le tuyau suivant :

-------------------------------------------------------------------
Dim Debut As Integer, Lignes As Integer

With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").codemodule
Debut = .ProcStartLine("Workbook_Open", 0)
Lignes = .ProcCountLines("Workbook_Open", 0)
.DeleteLines Debut, Lignes
End With
-----------------------------------------------------------------

Ca marche super sauf quand le workbook_open a deja été effacé !! j'ai un miserable message d'erreur : erreur 35, sub ou fonction non définie.

Comment eviter que ma macro plante quand il n'y a pas ce workbook_open ?

Merci

@+

Creepy
 
une solution un peu brutale mais qui marche :

Dim Debut As Integer, Lignes As Integer

on error goto suite

With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").codemodule
Debut = .ProcStartLine("Workbook_Open", 0)
Lignes = .ProcCountLines("Workbook_Open", 0)
.DeleteLines Debut, Lignes
End With

suite :

'la suite du code...
 
Bonjour Creepy, Pierref, le Forum

Je trouve la même solution que Pierref, mais je préfère souvent créer un réel "ErrorHandler" car dans l'exemple que Pierref donne toutes les erreurs seront ignorées, ce qui, selon la nature du reste du code peut occasionner des désagrément...

Sub TestWorkbook_Open()
Dim Debut As Integer, Lignes As Integer
Dim msg As String

With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").codemodule
On Error GoTo ErrorHandler
Debut = .ProcStartLine("Workbook_Open", 0)
Lignes = .ProcCountLines("Workbook_Open", 0)
.DeleteLines Debut, Lignes
End With

'blah blah blah suite du code (if any)

Exit Sub
ErrorHandler:
If Err = 35 Then
MsgBox "Macro WorkBook_Open non existante", vbInformation, "Erreur Gérée"
Else
MsgBox "Une erreur # " & Str(Err.Number) & " a été générée par " _
& Err.Source & vbCrLf & Err.Description, vbCritical, "DANGER Erreur Non-Gérée"
End If
End Sub

Bien entendu, si dans ce cas de Figure, Creepy ne veut pas être "embêté" par le message pour le WorkBook_Open, le ErrorHandler peut se présenter ainsi :

If Err <> 35 Then
MsgBox "Une erreur # " & Str(Err.Number) & " a été générée par " _
& Err.Source & vbCrLf & Err.Description, vbCritical, "DANGER Erreur Non-Gérée"
End If
End Sub

Bon Aprèm
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
2
Affichages
1 K
C
Réponses
2
Affichages
1 K
E
Retour