Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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.
Il manque quelques infos importantes pour que l'on puisse t'aider : veuxtu que la sauvegarde soit automatique après l'import ? Quel est le répertoire de sauvegarde ?
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.
Pmo au risque de dire une bêtise, je pense que Kheldar appelle fichier modèle son fichier de base c'est à dire son .xls de départ. On utilise souvent "fichier modèle" par abus de langage...
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
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.