Fenetre à la fermeture du classeur

Bonjour à tous, je ne suis pas un expert en visual script, et c'est la première fois que je l'utilise en fait!! Ca à l'air super puissant à utiliser avec excel!!

Bref, voilà ce que j'aimerais faire:

Lorsqu'on quitte le classeur, je veux qu'une fenetre s'ouvre en disant: "Avez vous bien pensé à mettre à jour l'onglet "Actualisation"?

Si on répond oui, le fichier s'enregistre et on quitte le classeur, et si on répond non, alors on retourne à l'onglet "Actualisation" afin de pouvoir la mettre à jour...

Merci beaucoup pour votre temps:

voilà ce que j'avais fait pr le moment, mais bon c'est pas terrible!!

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Response = MsgBox("Avez-vous bien pensé à remplir l'onglet 'Actualisation?'", vbYesNo + vbCritical + vbDefaultButton2)

If Response = vbNo Then

Exit Sub

ElseIf Response = vbYes Then

Dim Fs As String

Fs = Application.GetSaveAsFilename(fileFilter:="Microsoft Excel File (*.xls), *.xls")

If Fs = "False" Then

Exit Sub

End If

ThisWorkbook.SaveAs Fs

ActiveWorkbook.Close

End If

End Sub

N'ayant pas de réponse, j'ai continué à chercher un peu partout sur le net...

J'ai réussi à bricoler ceci:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Rep = MsgBox("Avez-vous completé l'onglet 'Actualisation' ?", vbQuestion + vbYesNo, "ATTENTION")

If Rep = vbYes Then

MsgBox "PARFAIT!"

ActiveWorkbook.Save

ElseIf Rep = vbNo Then

MsgBox "FAITES-LE!"

Sheets("Actualisation").Select

Cancel = True

End If

End Sub

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

Rep = MsgBox("Avez-vous completé l'onglet 'Actualisation' ?", vbQuestion + vbYesNo, "ATTENTION")

If Rep = vbYes Then

MsgBox "PARFAIT!"

ElseIf Rep = vbNo Then

MsgBox "FAITES-LE!"

Sheets("Actualisation").Select

Cancel = True

End If

End Sub

Par contre le problème, c'est que qd je ferme le classeur (BeforeClose), il me pose une première fois la question, puis si je l'ai fermé suite à des modifications, alors il me repose la question une deuxième fois (BeforeSave) avant de sauvegarder!! Comment ne pas avoir cette répétition?

merci à tous

C'est peut être pas la meilleur solution, mais tu pourrais ajouter un boolean (public) dans ta procédure BeforeSave (appelon le bool), defini sur "False" par défaut. Lorsque tu utilise BeforeSave, tu fais bool = true. Ensuite, il n'y a pus qu'à conditionner ta fonction BeforeClose en fonction de la valeur de bool (tu l'exectute si bool = false) .

J'espère avoir répondu à ta question (et avoir été clair...)

A plus

Tibaldus

C'est très gentil de m'avoir répondu, mais cependant, je ne comprends exactement ce que je devrais faire!! C'est un peu compliqué pour moi!! Je mets ton code où dans le code que j'i écris au dessus?

merci en tout cas

Au début de ton code (avant le début de ta première procédure), tu défini ta variable boolean :

dim bool as boolean
bool = False

Ensuite, tu ajoute une ligne dans le code de ta procédure BeforeSave pour définir bool sur "true" lorsque tu l'utilise :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Rep = MsgBox("Avez-vous completé l'onglet 'Actualisation' ?", vbQuestion + vbYesNo, "ATTENTION") 
If Rep = vbYes Then 
MsgBox "PARFAIT!"
    bool = True                     'Ligne a ajouter
ElseIf Rep = vbNo Then 
MsgBox "FAITES-LE!" 
Sheets("Actualisation").Select 
Cancel = True 
End If 
End Sub

Ensuite, pour eviter que le message s'affiche 2 fois, tu fais en sorte que la fonction BeforeClose ne s'execute que si bool = False (si bool = True ça veux dire que tu as déjà eu le message avec la fonction BeforeSave) :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If bool = False Then                       ' Ligne a ajouter
Rep = MsgBox("Avez-vous completé l'onglet 'Actualisation' ?", vbQuestion +        vbYesNo, "ATTENTION") 
If Rep = vbYes Then 
MsgBox "PARFAIT!" 
ActiveWorkbook.Save 
ElseIf Rep = vbNo Then 
MsgBox "FAITES-LE!" 
Sheets("Actualisation").Select 
Cancel = True 
End If 
    End if                                            ' Ligne a ajouter
End Sub

Normalement ça devrait marcher...

A plus

Tibaldus[/b][/code]

Merci beaucoup!!!

A partir de ce que tu m'as dit voilà ce que j'ai fais:

Dim bool As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If bool = False Then

Rep = MsgBox("Avez-vous completé l'onglet 'Actualisation' ?", vbQuestion + vbYesNo, "ATTENTION")

If Rep = vbYes Then

MsgBox "PARFAIT!"

bool = True

ActiveWorkbook.Save

ElseIf Rep = vbNo Then

MsgBox "FAITES-LE!"

Sheets("Actualisation").Select

Cancel = True

bool = False

End If

End If

End Sub

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

If bool = False Then

Rep = MsgBox("Avez-vous completé l'onglet 'Actualisation' ?", vbQuestion + vbYesNo, "ATTENTION")

If Rep = vbYes Then

MsgBox "PARFAIT!"

bool = True

ElseIf Rep = vbNo Then

MsgBox "FAITES-LE!"

Sheets("Actualisation").Select

Cancel = True

bool = False

End If

End If

End Sub

Comme ça au cas où la personne répod non, ca remet bool sur False..

Encore merci

Rechercher des sujets similaires à "fenetre fermeture classeur"