Msgbox avant de fermer ou d'enregister un fichier

Boubas1

XLDnaute Occasionnel
Bonjour,

Je viens vers vous car nous sommes plusieurs à utiliser un fichier excel nommé "base_indus" mais certains un peu novices en excel ont tendance à me faire des tris n'importe comment et me change le fichier d'origine. Donc pour éviter cela, je voudrais éviter d'utiliser des mots de passe et je voudrais simplement les alerter au moment où ils tenteraient d'enregistrer leurs modifs.
Ainsi, j'aimerais svp que vous me donniez le code pour qu'un message d'alerte apparaisse avant que mes collègues ne ferme ou ne tente d'enregistrer le fichier.
Et ce message indiquerait donc "Attention vos modifications sur ce fichier ne sont pas à enregistrer !", avec un "OK" en bas du message qui fermerait, si possible le fichier sans enregistrer les modifs de mes collègues.
Ps: Pouvez vous me dire s'il s'agit d'une macro à effectuer, et le code est-il à intégrer dans un module du fichier où ailleurs ?
Merci.
 

Macpoy

XLDnaute Impliqué
Re : Msgbox avant de fermer ou d'enregister un fichier

bonsoir le forum, Boubas1,

pour ce qui est du msg c'est bon voir exemple.
pour empêcher l'enregistrement, je cherche.
@ plus
 

Pièces jointes

  • Classeur1.xls
    19.5 KB · Affichages: 169
  • Classeur1.xls
    19.5 KB · Affichages: 161
  • Classeur1.xls
    19.5 KB · Affichages: 152

Macpoy

XLDnaute Impliqué
Re : Msgbox avant de fermer ou d'enregister un fichier

Re,

il suffit de rajouter cette ligne à l'existant.
ThisWorkbook.Saved = True

ce qui donne :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "Attention vos modifications sur ce fichier ne sont pas à enregistrer !", vbOKOnly
ThisWorkbook.Saved = True
End Sub
aucune modif ne sera enregistrée à la fermeture.

mais si les utilisateurs clique sur le bouton enregistrer, ce code ne sert plus à rien !!

@plus
 

ROGER2327

XLDnaute Barbatruc
Re : Msgbox avant de fermer ou d'enregister un fichier

Bonsoir à tous
On peut mettre le classeur en lecture seule. On ne pourra enregistrer les modifications que sous un nouveau nom.​
ROGER2327
#3417


16 Floréal An CCXVIII
2010-W18-3T20:40:41Z
 

Macpoy

XLDnaute Impliqué
Re : Msgbox avant de fermer ou d'enregister un fichier

Re,
bonsoir ROGER2327,

Code:
On peut mettre le classeur en lecture seule. On ne pourra enregistrer  les modifications que sous un nouveau nom.

bon sang mais c'est bien sur !!! comment n'y avais je pas pensé !!!
 

ROGER2327

XLDnaute Barbatruc
Re : Msgbox avant de fermer ou d'enregister un fichier

Re...
Pour mettre le fichier en lecture seule, l'enregistrer et le fermer. Ensuite un clic-droit sur son icône dans le dossier où il est enregistré, puis Propriétés/Général et valider Lecture seule.​
ROGER2327
#3419


16 Floréal An CCXVIII
2010-W18-3T21:21:53Z
 

Boubas1

XLDnaute Occasionnel
Re : Msgbox avant de fermer ou d'enregister un fichier

bonsoir,

Si on veut mettre le code de McPoy, c'est 1 macro, donc on fait bien "outils", "macros", "nouvelle macro" et on met le code dans un module ?
S'agirait-il pas plutôt d'un évènement, alors comment procéder alors ? Merci.
 

Macpoy

XLDnaute Impliqué
Re : Msgbox avant de fermer ou d'enregister un fichier

bonjour le forum,

bonsoir,

Si on veut mettre le code de McPoy, c'est 1 macro, donc on fait bien "outils", "macros", "nouvelle macro" et on met le code dans un module ?
S'agirait-il pas plutôt d'un évènement, alors comment procéder alors ? Merci.


ce code est mettre dans ThisworBook

mais je le répète, si un utilisateur fait un enregistrement avant de fermer, ce code ne sert plus à rien !!

mais en cherchant un peu il est possible qu'on puisse empêcher toutes sorte d'action permettant l'enregistrement. a voir ???

@ plus
 

job75

XLDnaute Barbatruc
Re : Msgbox avant de fermer ou d'enregister un fichier

Bonjour le fil,

Voici une autre solution, voisine de celle de BrunoM45 dans le fil indiqué par Macpoy.

1) Dans le VBA du fichier concerné, créer un Module (il restera vide), enregistrer et fermer le fichier.

2) Ouvrir le fichier en désactivant les macros.

3) Entrer dans ThisWorkbook cette macro :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
With ThisWorkbook
If .Saved Then Exit Sub
MsgBox "Vos modifications sur ce fichier ne seront pas enregistrées !"
Cancel = True
  .Saved = True
  If Workbooks.Count = 1 Then Application.Quit Else .Close
End With
End Sub

4) Enregistrer et fermer le fichier.

Maintenant, lorsque le fichier est ouvert en activant les macros, toute modification du fichier est impossible.

Bien sûr on peut toujours le modifier en désactivant les macros... ce qui rend toute cette affaire un peu dérisoire, non ?

A+
 

Boubas1

XLDnaute Occasionnel
Msgbox avant d'enregister un fichier

Bonsoir,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "Attention vos modifications sur ce fichier ne sont pas à enregistrer !", vbOKOnly
End Sub

Peut-on avoir le même message avec ce code avant d'enregistrer, par exemple avec BeforeSave ou c'est pas possible ?
 

job75

XLDnaute Barbatruc
Re : Msgbox avant de fermer ou d'enregister un fichier

Bonjour Boubas1, le forum,

On peut si l'on préfère simplifier la macro du post #11 :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If ThisWorkbook.Saved Then Exit Sub 'pas indispensable...
MsgBox "Attention vos modifications sur ce fichier ne sont pas à enregistrer !"
Cancel = True
End Sub

Une macro Workbook_BeforeClose est inutile, sauf si l'on veut éviter la demande d'enregistrement :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With ThisWorkbook
  If Not .Saved Then
    MsgBox "Attention vos modifications sur ce fichier ne sont pas à enregistrer !"
    .Saved = True
    If Workbooks.Count = 1 Then Application.Quit Else .Close
  End If
End With
End Sub

A+
 

Discussions similaires

Réponses
2
Affichages
120
Réponses
2
Affichages
129

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote