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 Sub

Bonjour 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 Sub

A 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

Rechercher des sujets similaires à "probleme sauvegarde conditionnee"