Obligation d'enregistrer sous

  • Initiateur de la discussion Lemak
  • Date de début
L

Lemak

Guest
Bonjour à tous:
j'ai un classeur excel comme modèle;comment obliger l'utisateur aprés saisie données d'enregister le classeur sous le nom tapé dans la cellule'A1'.Merci
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Lemak, le forum

voici un code pour enregistrer le fichier automatiquement à un endroit donné défini dans la cellule A1 de la première feuille du classeur.
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Worksheets(1).Range('A1').Value
End Sub
ce code, lui, enregistre une copie du classeur à un emplacement donné défini dans la cellule A1 de la première feuille du classeur.
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
ThisWorkbook.SaveCopyAs ThisWorkbook.Worksheets(1).Range('A1').Value
End Sub

Cordialement, A+
 

Blunet

XLDnaute Occasionnel
Salut Lernak, dans ThisWorkbook insère le code suivant. Il permet d'enregistrer le classeur encours sous le nom en A1 dans mes documents.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom$
Nom = CStr(Range('A1').Value)
ActiveWorkbook.SaveAs Filename:=Nom
End Sub

Ciao
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re

Salut Eric
rien dans la demande initiale ne précise qu'il faut empécher l'utilisateur d'enregistrer une copie du document ou il veut mais simplement comment obliger l'utisateur aprés saisie de données d'enregister le classeur sous le nom tapé dans la cellule 'A1' ce que fait le code de manière transparente.
sinon on peut piéger avec une variable de test (en ajoutant une gestion d'erreur et un message utilisateur pendant qu'on y est)
Code:
Public Enr_Valid As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Enr_Valid = True
On Error GoTo Fin
ThisWorkbook.SaveAs ThisWorkbook.Worksheets(1).Range('A1').Value
MsgBox 'Document enregistré', vbOKOnly + vbInformation
Fin:
Enr_Valid = False
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = Not (Enr_Valid)
End Sub

pour Blunet
ton code peut poser problème, il enregistrera le classeur actif et non le classeur contenant la macro beforeclose ce qui n'est pas forcément la même chose.

Cordialement, A+
 

Discussions similaires

Réponses
17
Affichages
785

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha