Problème de sauvegarde conditionnée
Bonjour à tous
J’espère trouver, auprès de vous une solution à ce problème
En demandant une sauvegarde d’un classeur Excel 2010,
La cellule A1, gérée par Excel, autorise si =1 ou non si ="" la sauvegarde
La macro ci-dessous ne fonctionne pas tel quel,
Cancel= true pose problème. Il est nécessaire pour interdire en Lg3 ou en Lg10 (1 seule des 2 lignes placée)
mais pas de sauvegarde effectuée si A1=1 lg7
La sauvegarde s’effectue dans le seul cas ou Lg3 et Lg10 sont inactives mais l’interdiction ne sera plus vrai
J’ai fait l’essai dans un module et pas de solution.
Si quelqu’un à une idée, elle sera la bienvenue.
Cordialement à vous
Lg1 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Lg2 Dim rep As String
' Pas de sauvegarde souhaitée avec cette condition contenue dans la cellule A1
Lg3 'If Range("A1").Value = "" Then Cancel = True: ‘pose problème de sauvegarde
' sauvegarde autorisée
Lg4 If Range("A1").Value <> "" Then
Lg5 rep = MsgBox("Sauvegarde ?", vbYesNo)
Lg6 If rep = vbYes Then
Lg7 ActiveWorkbook.Save
Lg8 End If ‘si réponse non
Lg9 End If ‘si A1=""
Lg10 'Cancel = True 'pose problème de sauvegarde ou de non interdiction
Lg11 End SubBonjour Matysek35
Quel est votre problème exactement ?
A quel moment voulez-vous utiliser la possibilité de sauvegarder ou pas ?
A+
Bonjour Bruno, en ces temps de grande chaleur... comme mes neuronnes
Le problème est le suivant:
Une tentative de sauvegarde peut être demandée à n'importe quel moment.
La cellule A1 contrôle s'il y a eu des modifications dans la feuille Excel; son état=1 si des modifications ont été faites ou A1=rien s'il n'y en pas eu.
S'il y a eu des modifications, l'enregistrement s'effectue. S'il n'y en a pas eu, on ne peut enregistrer.
La fermeture du classeur n'intervenant qu'à partir d'une autre feuille.
Si la ligne 3 est écrite mais pas la 10, l'interdiction de sauvegarder s'il n'y a rien dans A1 est correcte mais en quittant la sub, l'enregistrement se fait malgré tout.
Si la ligne 10 est replacée en plus de la lig 3, la tentative de sauvegarde avec A1=1 s'effectue jusqu'au moment de l'instruction ActiveWorkbook.Save qui ne sauve rien du tout.
J'espère avoir pu m'expliquer au mieux.
Très cordialement
Re,
Quelle idée de mettre une cellule pour "contrôler" si une modification à été faite
Excel sait gérer cela tout seul, voici le code
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Annuler d'office
Cancel = True
' Vérifier si classeur sauvegardé depuis la dernière modification
If ThisWorkbook.Saved = False Then
' Si c'est NON, poser la question
If MsgBox("Des modifications ont été approtées," & vbCr _
& "Voulez-vous enregistrer le classeur", vbQuestion + vbYesNo, "ATTENTION...") = vbYes Then
' Désactiver IMPERATIVEMENT les évènements
Application.EnableEvents = False
' Sauvegarder le classeur
ThisWorkbook.Save
' Réactiver les évènements
Application.EnableEvents = True
End If
End If
End SubA adapter si vous le souhaitez
A+
Bonsoir Bruno
Merci de ta macro que j'ai un poil adaptée. C'est la désactivation impérative des évènementsepuis leur réactivation qui m'a permis de tout faire fonctionner.
Grand merci à toi d'avoir su me consacrer ce temps
Belle continuation