Aide débogage/fichier dévérouillé

Bonjour,

J'ai un fichier avec plusieurs feuilles et différentes Macro. Le fichier est protégé (feuille + Classeur).
Toutes mes macros enlèvent d'abord la protection et finissent en protégeant le fichier.

Le problème c'est qu'il se peut qu'une Macro "bug" suite à différents champs non rempli. Lorsque la fenêtre débogage apparait et qu'on y met fin, la macro ne s'étant pas exécutée entièrement, le fichier reste non protégé.

Est-il possible de dire simplement SI BUG protéger tout ? Un peu sur le même principe qu'une formule SIERREUR fait ça...
Exemple de Macro du fichier : (dans ce cas les bug peuvent être que le Destinataire ou l'Expéditeur ne sont pas encore renseignés ou qu'il soient mal écrit exemple adresse mail sans @)
(précision cette case n'est pas toujours à remplir, mais si l'utilisateur clique sur le bouton exécutant la macro par erreur alors le fichier sera déverrouillé)

Sub DIS()
'
' Edition_DdeFinancement
' Création de la demande de financement au format PDF pour envoi, par courriel pour signature
'
Verrouillage = Range("Verrou")
Dossier = ChoixDossier
NomFichier = "\" & Range("Nom_PDF")
Chemin = Dossier & NomFichier & ".pdf"

ActiveWorkbook.Unprotect Password:=Verrouillage
Worksheets("Caution DIS").Visible = True

Destinataire = Range("Courieldismz")
Expéditeur = Range("NomCDmz")

Sheets("Caution DIS").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("DDP 2").Select

Set olApp = CreateObject("Outlook.application")
Set olMail = olApp.CreateItem(olMailItem)

With olMail
.To = Destinataire
.Subject = "Demande suite à notre échange"
.Body = Range("Mailmz_L11") & Range("Mailmz_L12") & Range("Mailmz_L16") & Range("Mailmz_L13") & Range("Mailmz_L14") & Range("Mailmz_L15") & Expéditeur
.attachments.Add Chemin
.Send
End With

Worksheets("Page DIS").Visible = False
ActiveWorkbook.Protect Password:=Verrouillage, structure:=True, Windows:=False

MsgBox "Merci de vérifier que le message apparait bien dans les messages envoyés de votre messagerie OUTLOOK"
'

End Sub

Edit modo : code à mettre entre balises avec le bouton </> merci d'y faire attention la prochaine fois

Bonjour marcotsuki,

Merci de faire mettre le code entre balises SVP avec le bouton

2023 06 22 09h32 31

La prochaine fois c'est -> poubelle

Sinon, pour vote problématique, il suffit de gérer les erreurs possible

Sub DIS()
  ' Pensez à définir vos variables en début de Sub
  'Dim MaVariable As Type
  On Error Goto Err_Proc
  ' Ensuite votre code
  ' ...
  ' Et à la fin
Err_Proc :
  ActiveWorkbook.Protect Password:=Verrouillage, structure:=True, Windows:=False
End Sub

Comme ça, si une erreur se produit, le classeur est automatiquement verrouillé

A+

Bonjour BrunoM45,

Super merci ça résout parfaitement le problème !

Je suis novice dans les macro je comprends pas vraiment ce que vous voulez dire par "Pensez à définir vos variables en début de sub" qu'est ce que ça change dans mon cas ?

Re,

Lorsque l'on code, il faut définir les variables que l'on va utiliser.
Moins de problèmes de bug dû aux noms, optimisation de la mémoire, etc...

https://www.excel-pratique.com/fr/vba/variables

Donc dans votre cas

Sub DIS()
  Dim Verrouillage as String, Dossier As String, NomFichier As String, Chemin As String
 ' Initialisation des variables
  Verrouillage = Range("Verrou")
  Dossier = ChoixDossier
  NomFichier = "\" & Range("Nom_PDF")
  Chemin = Dossier & NomFichier & ".pdf"
  ' Suite du code
End Sub

A+

Rechercher des sujets similaires à "aide debogage fichier deverouille"