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.
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 !!
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.
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.
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.
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 ?
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