Bypass de Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
spage
Membre habitué
Membre habitué
Messages : 89
Appréciations reçues : 2
Inscrit le : 3 février 2014
Version d'Excel : 2010

Message par spage » 15 janvier 2020, 20:55

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.
BOB.xlsb
(16.58 Kio) Téléchargé 1 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'536
Appréciations reçues : 321
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 16 janvier 2020, 03:10

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
Vive ces nouvelles saisons qui nous colorent.
isabelle
Avatar du membre
spage
Membre habitué
Membre habitué
Messages : 89
Appréciations reçues : 2
Inscrit le : 3 février 2014
Version d'Excel : 2010

Message par spage » 16 janvier 2020, 15:10

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….??
Avatar du membre
spage
Membre habitué
Membre habitué
Messages : 89
Appréciations reçues : 2
Inscrit le : 3 février 2014
Version d'Excel : 2010

Message par spage » 17 janvier 2020, 15:01

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.
Avatar du membre
spage
Membre habitué
Membre habitué
Messages : 89
Appréciations reçues : 2
Inscrit le : 3 février 2014
Version d'Excel : 2010

Message par spage » 17 janvier 2020, 15:02

Merci encore i20100

::D ::D
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message