Code non pris en compte sur événement Workbook_BeforeClose

Bonjour,

J'ai un problème que je n'arrive pas à résoudre malgré pas mal de temps passé dessus.

Le coeur du problème est celui-ci: le code dans Workbook_BeforeClose n'est pas exécuté si l'utilisateur clique sur "Non" dans la boîte de dialogue de fermeture du classeur alors que l'événement a bien lieu.

Je m'explique:

A l'ouverture du classeur, j'ai un code qui vérifie si le classeur est en lecture seule

Si c'est le cas, rien ne se passe - Sinon (le classeur est alors ouvert en écriture), j'ai un userform qui demande de saisir ses initiales et les inscrit dans la cells(1,1).

     If ThisWorkbook.ReadOnly = False Then
         UserFormOuvertParQui.Show
     End If

Le code du userform est tout bête:

Private Sub CommandButtonOk_Click()
    If UserFormOuvertParQui.TextBoxSaisieInitiales.Text = "" Then
        MsgBox ("Entrez vos initiales SVP")
        UserFormOuvertParQui.TextBoxSaisieInitiales.SetFocus
    Else
    Sheets("questSysoupofoap").Cells(1, 1) = "Ouvert par " & UCase(UserFormOuvertParQui.TextBoxSaisieInitiales)
    ThisWorkbook.Save
    UserFormOuvertParQui.Hide
    End If
End Sub
Private Sub UserForm_Initialize()
    With UserFormOuvertParQui.TextBoxSaisieInitiales
        .Text = ""
        .SetFocus
    End With
End Sub

A la fermeture du classeur, j'ai un code qui vérifie si le classeur est en lecture seule

Si c'est le cas, rien ne se passe - Sinon (le classeur est alors ouvert en écriture), j'éxécute:

    If ThisWorkbook.ReadOnly = False Then
        Sheets("questSysoupofoap").Cells(1, 1).ClearContents        
    End If

Le truc étrange c'est que quand je suis en écriture et que je ferme puis clique sur "Non" (donc ne pas enregistrer), la cells(1,1) est bien nettoyé mais son contenu est conservé à la réouverture !

Je joins un classeur sans données.

Merci pour vos idées.

Bonjour,

Sans ouvrir ton classeur, on peut voir que ceci est un fonctionnement normal de ton code....

Lorsque tu es en mode "écriture", tu inscrits les initiales dans une cellule, puis tu "Enregistres"

Lorsque tu quittes, et que tu ne veux pas enregistrer les modifications, il est donc normal de retrouver ces initiales dans cette cellule... CQFD..

Bonne journée

Bonjour,

Modifie ton code dans BeforeClose

    If ThisWorkbook.ReadOnly = False Then
        Sheets("questSysoupofoap").Cells(1, 1).ClearContents        
        ActiveWorkbook.Save
    End If

A+

Bonjour,

Merci beaucoup à vous deux, ça marche, impec !

Bonne journée.

Rechercher des sujets similaires à "code pris compte evenement workbook beforeclose"