Ouverture menu enregistrer sous

havopti

XLDnaute Nouveau
Salut a tous

j'ai une macro qui empêche de sauvegarder un fichier si celui correspond au mon chemin cible, le but était d’éviter d'utiliser la lecture seule.

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 If ThisWorkbook.FullName = "chemin cible" Then Cancel = True
End Sub

hors avec ceci j’obtiens parfaitement ce que je veux c'est à dire qu'il est impossible de sauvegarder des modifications sur se fichier, je voudrais juste ajouter lorsque que l'on quitte le fichier une ouverture du menu enregistrer sous afin que des utilisateurs maladroits qui ont fait des modifications sur le fichier sans faire attention puisse tout de meme sauver leurs travail en faisant une copie.

le probleme c'est que le code du type

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Dialogs(xlDialogSaveAs).Show
End Sub
qui marcherai sans autres conditions ne fonctionne pas si l'on place mon code plus haut
 
Dernière édition:
G

Guest

Guest
Re : Ouverture menu enregistrer sous

Bonjour,

Dans le module ThisWorkbook:
Code:
Option Explicit
Private BeforeClosing As Boolean
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     If ThisWorkbook.FullName = "chemin cible" Then Cancel = Not BeforeClosing
    BeforeClosing = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    BeforeClosing = True
    Application.Dialogs(xlDialogSaveAs).Show
End Sub

dis nous si cela résout ton problème.

A+
 
Dernière modification par un modérateur:
G

Guest

Guest
Re : Ouverture menu enregistrer sous

Re,

Cela irait-il :
Code:
ChDir "C:\Users\xxxx\Documents"

Voir l'aide excel sur ChDir, CurDir

A+
 
Dernière modification par un modérateur:

havopti

XLDnaute Nouveau
Re : Ouverture menu enregistrer sous

oops mauvaise converse

d'ailleurs je trouve pas la fonction supprimer le message

j'en suis la :confused:

Code:
Option Explicit
Private BeforeClosing As Boolean
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not BeforeClosing Then
 If ThisWorkbook.FullName = "chemin cible.xlsm" Then Cancel = True
    End If
    BeforeClosing = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    BeforeClosing = True
    ChDrive ("C:\")
ChDir ("\chemin d'enregistrement")
    Application.Dialogs(xlDialogSaveAs).Show
End Sub
 
Dernière édition:

havopti

XLDnaute Nouveau
Re : Ouverture menu enregistrer sous

Il faut mettre il faut bien sur que le répertoire existe.

Salut j'ai aussi testé cette manière mais comme le fichier cible est a la base sur un disque commun P il faut je crois passer par le Ch Drive pour préciser que je veux directement enregistrer sur le disque dur du PC



De quelle fonctionne parles-tu pour supprimer le message et de quel message s'agit-il ?
je parlais juste de supprimer un poste sur le forum ^^ pas de macro la :)
 

Discussions similaires

Statistiques des forums

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