Rapport de message :*
 

Re: Sauvegarde fichier: suggestion automatique du nom de fichier

Titre du sujet : Re: Sauvegarde fichier: suggestion automatique du nom de fichier
par Guy le 17/08/2014 18:20:14

Bonjour Nim,

 

Le processus d'enregistrement des modèles, par exemple MonModèle.xltx, lorsqu'ouverts en tant que Nouveaux pose automatiquement le nom du classeur comme MonModèle1 sans extension aucune (indiqué dans l'en-tête d'Excel).

 

En fouillant dans les propriétés de MonModèle1 on trouve pour les trois propriétés suivantes les valeurs suivantes :

Name = "MonModèle1"
Path = ""
FullName = "MonModèle1"

 

Ces trois propriétés sont en lecture seule, il n'y a aucun moyen de les modifier par code.

Lorsqu'on enregistre MonModèle1, comme la propriété Path est une chaîne vide la méthode de sauvegarde passe automatiquement à Enregistrer sous... (SaveAs) et le formulaire d'enregistrement s'ouvre avec le nom de classeur MonModèle1.xlsx.

 

On peut mettre en évidence le processus d'enregistrement comme suit.

Dans un module standard nommé Module1 une fonction toute simple

 

Sub Enregistrer()
   ThisWorkbook.Save
End Sub

L'objet ThisWorkbook étant en l'occurence une référence à MonModèle1.

En examinant la pile des appels dans l'ordre inverse (Appelants d'abord) on trouve

 

VBAProject.Module1.Enregistrer
[<Code non Basic>]
VBAProject.ThisWorkbook_BeforeSave

 

C'est la portion [<Code non Basic>] qui déclenche, en fournissant deux paramètres, l'événement ThisWorkbook_BeforeSave dont la signature est

 

Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dans le cas qui nous occupe, le [<Code non Basic>] passe le paramètre SaveAsUI (Valeur passée True) par valeur et le paramètre Cancel (Valeur passée False) par référence. Ce qui signifie qu'on a beau poser SaveAsUI à False, la valeur de ce paramètre n'est pas modifiée dans le processus appelant. Par contre si on pose à True le paramètre Cancel, le processus appelant en est informé et annule l'enregistrement.

 

Ce que tu cherches à faire est de détourner le processus automatique pour forcer l'enregistrement de MonModèle1 comme UnNomContenuDansG2.xlsx.

 

C'est possible (à moins que je me goure) mais il y a de nombreux pièges sur la route.

 

Alors j'ai trois questions :
Est-ce que seule la feuille Deck sera enregistrée?
Est-ce que cette feuille dans ton classseur de travail est lourde?
Est-ce que seule l'extension .xlsx sera autorisée pour la sauvegarde?

 

Cordialement,

 

Guy