Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

erreur GetSaveAsFilename

mc_guiloo

XLDnaute Nouveau
Bonjour au forum,

J'ai écrit une macro pour forcer l'utilisateur en enregistrer le classeur avec un nom précis, et ce seulement si le fichier de départ est "Medele Tableau.xls".
Cependant, après l"enregistrement, Excel me retourne un message d'erreur me proposant de récupérer mes données non enregistrées, ainsi que d'envoyer un rapport d'erreur à microsoft. toutefois, l'enregistrement à été réalisé avec succès. Une idée ?

Mon code :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim fName
Dim Chemin As String

If ThisWorkbook.Name <> "Modele Tableau.xls" Then Exit Sub

Chemin = ThisWorkbook.Path & "\Tableau " & Range("Feuil2!H3").Text & ".xls"

fName = Application.GetSaveAsFilename(InitialFileName:=Chemin)

If fName <> False Then ThisWorkbook.SaveAs FileName:=fName

End Sub

Merci d'avance

Guilhem
 
Dernière édition:

mc_guiloo

XLDnaute Nouveau
Re : erreur GetSaveAsFilename

C'est bon, j'ai enfin trouvé la solution.
L'erreur était due au fait que l'on ne désactivait pas la sauvegarde du au clic sur le bouton enregistrer. Du coup, il voulait enregistrer deux fois mon classeur.
La solution consiste à placer un
application.enablevents = False

Voici donc mon code si ca peut servir un jour à quelqu'un

'**************Suggère un nom d'enregistrement*************
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim fName
Dim Chemin As String

'on ne propose un enregistrement particulier que pour le modèle
If ThisWorkbook.Name <> "Modele Tableau.xls" Then Exit Sub

Chemin = ThisWorkbook.Path & "\Tableau " & Range("Feuil2!H3").Text & ".xls"

'on annule l'enregistrement en cours
Cancel = True

Application.EnableEvents = False 'pour ne pas tenir compte de l'annulation
fName = Application.GetSaveAsFilename(InitialFileName:=Chemin)

'si l'utilisateur clic sur annuler, on annule la sauvegarde
If fName = False Then
Cancel = True
Exit Sub
End If

ThisWorkbook.SaveAs FileName:=fName

Application.EnableEvents = True
End Sub
 

Discussions similaires

Réponses
9
Affichages
127
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…