Nom de fichier et date

kheldar

XLDnaute Nouveau
Bonjour à tous,

J'ai trouvé ce forum que depuis quelques jours, c'est une source énorme d'aide à l'utilisation et au développement.

C'est pourquoi je me permets de poser une contrainte sur un fichier excel que je suis en train de mettre en place pour le taf :

A l'ouverture du fichier modèle que je vais utilisé, je souhaiterai que ce fichier se sauvegarde en fonction du numéro de la semaine après avoir terminé de modifier certaines cellules de ce fichier.

Exemple : mon fichier modèle s'appelle : Ventes
Je suis en semaine 52.
J'importe les ventes des références dans ce fichier et je souhaiterai que ce fichier soit sauvegardé sous le nom suivant : Ventes sem 52.

Merci d'avance pour votre aide.
 

PMO2

XLDnaute Accro
Re : Nom de fichier et date

Bonjour,

Une piste avec le code suivant. Attention : la démarche est plutôt compliquée.
Voilà ce que j'ai fait

CREATION D'UN MODELE .XLT
1) création d'un nouveau classeur
2) y faire la mise en page, les données, les formules, etc pour obtenir votre modèle
3) enregistrer ce classeur en faisant menu Fichier/Enregistrer sous…
Dans "Type de fichier" sélectionner "Modèle (*.xlt)"
Dans "Nom de fichier" mettez un nom approprié (ex : Ventes)
Ne changez pas le chemin de "Enregistrer dans" qui devrait être du type
"C:\Documents and Settings\[nom utilisateur]\Application Data\Microsoft\Modèles"
Cliquer sur "Enregistrer"
4) Le classeur se nomme maintenant "Ventes.xlt"

COPIE DU CODE DANS VENTES.XLT
1) faire Alt+F11 pour faire apparaître le VBE (Editeur VBA)
2) faire Ctrl+R pour faire apparaître l'Explorateur de projets (il se peut qu'il soit déjà visible)
3) cliquer sur le + de VBAProject pour le dérouler (il se peut qu'il soit déjà déroulé)
4) cliquer sur le + de Microsoft Excel Objets (il se peut qu'il soit déjà déroulé)
5) double cliquer sur "Thisworkbook" pour faire apparaître sa fenêtre de code
6) y copier le code suivant
Code:
'### Chemin à adapter selon usage ###
Const CHEMIN As String = "C:\"
'####################################

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NumWeek&
Dim WB As Workbook
Dim N As Name
Dim bool As Boolean
Dim Fichier$
Dim cpt&
Dim A$
Set WB = ThisWorkbook
If LCase(Right(WB.Name, 4)) = ".xlt" Then
  Call DeleteName
  GoTo Fin
End If
For Each N In WB.Names
  If N.Name = "___compteurPMO___" Then
    bool = True
    Exit For
  End If
Next N
If Not bool Then
  WB.Names.Add Name:="___compteurPMO___", _
      RefersTo:="dummy", Visible:=False
  NumWeek& = CLng(Format(Now, "ww", _
      vbMonday, vbFirstFourDays))
  Fichier$ = "Ventes semaine " & NumWeek&
  A$ = Fichier$
  With Application.FileSearch
    Do
      .LookIn = CHEMIN
      .Filename = A$ & ".xls"
      If .Execute > 0 Then
        cpt& = cpt& + 1
        A$ = Fichier$ & " #" & cpt&
      End If
    Loop Until .Execute = 0
  End With
  WB.SaveAs Filename:=CHEMIN & A$ & ".xls"
End If
Fin:
End Sub

Private Sub DeleteName()
Dim N As Name
For Each N In ThisWorkbook.Names
  If N.Name = "___compteurPMO___" Then
    N.Delete
    Exit For
  End If
Next N
End Sub

7) adapter la constante Const CHEMIN As String = (ex: "D:\dossier mes ventes\dossier sud\")
ATTENTION ne pas omettre l'antiSlash ("\") à la fin
8) sauvegarder (par Ctrl+S ou menu Fichier/Enregistrer)
9) fermer le classeur.xlt

UTILISATION
1) faire menu Fichier/Nouveau…
2) dans la fenêtre qui s'affiche et dans le paragraphe "Modèles" cliquer "Sur mon ordinateur..."
3) dans la boîte "Modèles" onglet "Général" double cliquer sur "Ventes.xlt"
4) le classeur se nomme maintenant "Ventes1"
5) y apporter des modfications ou des données supplémentaires
6) ATTENTION c'est en le fermant qu'il s'enregistrera avec le nom "Ventes semaine x"
Si on le sauvegarde tel quel il sera enregistré sous le nom "Ventes1" et quand on le fermera
il se réenregistrera sous le nom "Ventes semaine x"

CONFLITS SURMONTES
1) Si on ouvre le fichier "Ventes semaine x" plus tard et que le numéro de semaine a changé,
celui-ci ne sera pas enregistré avec le nouveau numéro de semaine. On peut donc le consulter
ou le modifier à loisir (la macro ne s'exécutera plus)
2) Si on ouvre à nouveau le modèle "Ventes.xlt" la même semaine et qu'il existe déjà un
fichier "Ventes semaine x" le nouveau fichier ouvert sera automatiquement nommé
"Ventes semaine x #1" (système automatique d'incrémentation)

Ouf !

J'ai fait l'essai chez moi (Excel 2003 et XP) et cela fonctionne.

A vous de faire. Bon courage.

Cordialement.

PMO
Patrick Morange
 

PMO2

XLDnaute Accro
Re : Nom de fichier et date

Bonsoir JUJU_69,

Non, ce n'est pas une bêtise de penser cela et j'avais pensé à cette alternative.

CAS 1 (Classeur classique .xls déjà existant)
On ouvre ce classeur et on passe à l'instruction 3) du paragraphe
CREATION D'UN MODELE .XLT de mon premier message

CAS 2 (Classeur Modèle .xlt déjà existant)
Dans ce cas, il faut l'ouvrir en double cliquant sur son icône
(le fichier .xlt doit se trouver quelque part dans
"C:\Documents and Settings\[nom utilisateur]\Application Data\Microsoft\Modèles")
car si on l'ouvre par la boîte "Modèles" onglet "Général" on n'aura pas
le fichier .xlt mais un fichier .xls (Modèle1.xls).

Si rien n'existe alors on fabrique comme c'est décrit dans mon premier message .

A NOTER
Si les dossiers du chemin "C:\Documents and Settings\[nom utilisateur]\Application Data\Microsoft\Modèles"
sont cachés (Application Data par exemple) faites pour les visualiser
1) Ouvrez n'importe quel DOSSIER (pas fichier)
2) Faites menu Outils/Options des dossiers...
3) Choisissez l'onglet Affichage
4) Dans "Fichiers et dossiers cachés" cochez "Afficher les fichiers et dossiers cachés"
5) Cliquez sur OK

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 337
Messages
2 087 392
Membres
103 536
dernier inscrit
komivi