Message automatique avant fermeture du fichier

sebbbbb

XLDnaute Impliqué
bonjour

ce code ne fonctionne pas.
voyez vous la raison svp
merci par avance

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Msg = "Avez-vous inscrit" & vbCrLf & "" & vbCrLf & " votre nom et la date de la dernière mise à jour sur la feuille accueil merci"
StyleBoîteDialogue = vbOKOnly + vbQuestion
Title = "Avant de fermer ce fichier,"
réponse = MsgBox(Msg, StyleBoîteDialogue, Title)
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Il serait de toute façon bon de déclarer les variables utilisées :
VB:
Dim Msg As String, StyleBoîteDialogue As VbMsgBoxStyle, Réponse As VbMsgBoxResult, Title As String
Mais à par ça le message s'affiche bien, qu'est-ce qui ne va pas ?
La procédure est elle bien dans le module ThisWorkbook ?
Dans la mesure où vous n'utilisez aucunement la réponse, d'ailleurs unique possible, il ne sert à rien de l'invoquer comme fonction, ceci suffit :
VB:
MsgBox Msg, StyleBoîteDialogue, Title
 

Jacky67

XLDnaute Barbatruc
Bonjour,
Ce code placé dans le ThisWorkbook du classeur en question fait ce qui est demandé.
Il pose la question, sans donner de choix de la réponse.

Voir en PJ un exemple simple avec choix"Oui" "Non"
-Oui ==>Le choix reste à définir (Dans l'exemple le fichier est enregistré et fermé)
-Non ==>la feuille "Accueil" est activée
Si ces informations sont connues, on pourrait imaginer d'automatiser les vérifications
 

Pièces jointes

  • testfermeture.xlsm
    14.1 KB · Affichages: 69
Dernière édition:

sebbbbb

XLDnaute Impliqué
Merci a vous
Jacky67, ton code me plait bien :)

je voudrai juste :
- si la réponse est oui : en cliquant sur le bouton oui : le fichier se ferme
- si la réponse est non : le message disparaît en laissant le fichier ouvert et donc la possibilité de modifier le fichier en attendant autre fermeture du fichier

peux tu modifier ton code stp ?

un grand merci par avance
seb
 

Jacky67

XLDnaute Barbatruc
juste pour l'esthétique : est il possible de modifier la couleur du titre du message et le centrer ? :D
seb
RE..
A ma connaissance, Non!
Quoi que pour le centrage , il y a les espaces.......
Code:
If MsgBox("Avez-vous inscrit" & vbCrLf & vbCrLf & "votre nom et la date de la dernière mise à jour sur la feuille accueil merci", 292, "                                            Avant de fermer ce fichier,") = 6 Then

Il y a la possibilité d'utiliser un userform, mais c'est plus compliqué.
 

sebbbbb

XLDnaute Impliqué
Effectivement le coup des espaces...tout bête mais efficace
une dernière requête si tu veux bien

Donc grâce à toi j'ai insérer le code ci-dessous qui marche parfaitement

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("SVP, MERCI CONFIRMER QUE VOUS AVEZ :" & vbCrLf & vbCrLf & "- Mis a jour la check list (avec date & initiales)" & vbLf & "- Mis a jour S.Wing" & vbLf & "- Actualisé l'écran du bureau" & vbLf & "- Envoyé L'email quotidien avec les prospects actualisés" & vbLf & "- Mis à jour l'eventuel hub system (youriss / eyefreight / DA desk)", 292, "AVANT DE FERMER CE FICHIER,") = 6 Then
Else
Cancel = True
Sheets("Fiche Données").Activate
End If
End Sub

ce que je voudrai maintenant c'est que lorsque je clique sur le bouton 'NON' celà m'envoie à non plus à l'onglet 'Fiche Données' mais à une autre. Le hic c'est que celà peut être une feuille avec un nom variable mais qui commencera toujours par 'CList'. j'ai donc fait le code ci-dessous mais celà ne fonctionne pas...

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("SVP, MERCI CONFIRMER QUE VOUS AVEZ :" & vbCrLf & vbCrLf & "- Mis a jour la check list (avec date & initiales)" & vbLf & "- Mis a jour S.Wing" & vbLf & "- Actualisé l'écran du bureau" & vbLf & "- Envoyé L'email quotidien avec les prospects actualisés" & vbLf & "- Mis à jour l'eventuel hub system (youriss / eyefreight / DA desk)", 292, "AVANT DE FERMER CE FICHIER,") = 6 Then
Else
Cancel = True
Sheets("CList" & "*").Activate
End If
End Sub

vois tu une solution stp ?

merci bcp par avance
seb
 

Dranreb

XLDnaute Barbatruc
Je me fiche du nom de l'onglet Excel, vous y mettez ce que vous voulez. Je vous parlais du nom de l'objet Worksheet qui le représente. Je ne laisse jamais Feuil1, Feuil2 etc. qui ne veulent rien dire. Ne pourriez vous l'appelez WshCList par exemple ?
Sinon n'a-t-il pas au moins toujours la même position dans la collection Worksheets ?
 

Dranreb

XLDnaute Barbatruc
Si c'est faisable, oui, parce que vous n'auriez qu'à mettre WshCList.Activate
Si en revanche c'est une feuille qui peut être supprimée, remplacée etc. mais qui sera toujours la 3ième feuille vous pourriez faire Worksheets(3).Activate
 

sebbbbb

XLDnaute Impliqué
je pense avoir trouvé tout seul comme un grand :)
heureusement car a cause de mon niveau je n'arrivais pas a te suivre
merci qd même

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("SVP, MERCI CONFIRMER QUE VOUS AVEZ :" & vbCrLf & vbCrLf & "- Mis a jour la check list (avec date & initiales)" & vbLf & "- Mis a jour S.Wing" & vbLf & "- Actualisé l'écran du bureau" & vbLf & "- Envoyé L'email quotidien avec les prospects actualisés" & vbLf & "- Mis à jour l'eventuel hub system (youriss / eyefreight / DA desk)", 292, "AVANT DE FERMER CE FICHIER,") = 6 Then
Else
Cancel = True
End If
Dim i
For i = 1 To ActiveWorkbook.Worksheets.Count
If Sheets(i).Name Like ("CList" & "*") Then
Sheets(i).Activate
Exit Sub
End If
Next i
End Sub
 

Discussions similaires