Bypass de Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel

Bonjour à tous,

J'ai une petite problématique de "macro perpétuelle". J'aurais besoin d'un coup de main.

1- Je souhaite que les demandeurs ne puissent pas enregistrer le fichier sans passer par une macro de validation.

…. ça fonctionne bien avec Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) qui de plus appelle la macro de validation du fichier… mais qui se termine par un enregistrement….

2- Donc ma problématique c'est que je reviens toujours à Private SUB qui ne veut pas enregistrer mon fichier.

3- Je souhaiterais toujours que les demandeurs ne puissent pas enregistrer le fichier sous mais qu'à la fin de la validation le fichier s'enregistre tout de même….. Je joint le fichier.

Voici le code THisworkbook

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

MsgBox "Ce classeur n'est pas enregistrable avant la validation!"

Cancel = True

Call Enrsous

End Sub

Et voici le code de la validation

Sub Enrsous()

'

' Enrsous Macro

Dim Fichier As String

If ActiveSheet.Range("G1").Value = 0 Then

reponse = MsgBox("**** ATTENTION **** La saisie de la nature est obligatoire.", vbOKOnly, "Message d'erreur")

Range("G1").Select

Exit Sub

End If

' ICI JE VEUX mettre bybass de THIS WORKBOOK before save.

' mettre KO privatesub beforesave

'ici les données pour enregistrer sous.

Fichier = [C2] & ".xlsb"

Fichier = Application.GetSaveAsFilename(Fichier, "Fichier Excel (*.xlsb), *.xlsb")

ActiveWorkbook.SaveAs Fichier

' Remettre le tout OK

End Sub

Merci à l'avance… j'ai testé plein de trucs mais je n'y arrive pas.

8bob.xlsb (16.58 Ko)

Bonjour,

à tester,

Sub Enrsous()
'
' Enrsous Macro
Dim Fichier As String

If ActiveSheet.Range("G1").Value = 0 Then
reponse = MsgBox("**** ATTENTION **** La saisie de la nature est obligatoire.", vbOKOnly, "Message d'erreur")
Range("G1").Select
Exit Sub
End If

' ICI JE VEUX mettre bybass de THIS WORKBOOK before save.
' mettre KO privatesub beforesave

'ici les données pour enregistrer sous.
Fichier = [C2] & ".xlsb"

Fichier = Application.GetSaveAsFilename(Fichier, "Fichier Excel (*.xlsb), *.xlsb")

Application.EnableEvents = False
ActiveWorkbook.SaveAs Fichier
Application.EnableEvents = True

' Remettre le tout OK
End Sub

BOnjour i20100,

Merci, ça fonctionne très bien,

Cependant je me retrouve avec le problème de ne pas être capable d'enregistrer mon fichier vierge puisque la macro ENRsous comporte des validations sur le contenu des cellules avant de se rendre à application.enableEvent = False.

Une piste de solution….??

Bon matin à tous,

J'ai trouvé tout seul comme un grand… pendant la nuit… j'ai eu une vision.

Je n'avais qu'à désactiver les macros et permettre l'accès au développeur section Projet.

Bonne journée.

Merci encore i20100

Rechercher des sujets similaires à "bypass private sub workbook beforesave byval saveasui boolean cancel"