Sauvegarde fichier mon code n'est pas parfait - VB/VBA/VBS - Programmation
Marsh Posté le 11-05-2011 à 10:27:29
Essayer
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & Format(Periode, "YYYYMM" ) & "\" & Client
Marsh Posté le 11-05-2011 à 11:35:26
olivthill a écrit : Essayer |
Oui comme cela ça fonctionne. Si je comprends bien, il fallait que je précise le format de la date du jour de mon fichier.
Merci beaucoup Olivthill
Marsh Posté le 11-05-2011 à 12:21:05
Coellophysis a écrit : |
ooopsss j'ai parlé un peu trop vite, lorsque j'ai recopié les codes avec le serveur correct de mon entreprise, j'ai rencontré 2 problèmes:
1) pour la création du sous-répertoire YYYYMM, cela fonctionne s'il n'existe pas mais si le rép est déjà là, ça bugg
2) il semble que la structure du fichier final à sauver soit indigeste à VBA, je reçois le message suivant:
"Microsoft Office cannot access the file "X:\02_0067\....\20110511\20110511 E-VUB_EGNW10 63997.xlsx"
Est-ce que c'est dû au fait qu'il y a un "E-" avant le nom du client?
Voici le code:
Sub SaveFileGas()
'Declaration
Dim NomRep As String
Dim Periode As Date
Dim Client As String
'Process
'La macro va dans le répertoire spécifié
NomRep = "X:\02_0067\07_Sales_Portfolio\06_Processes\02_GAS hedging\01_DISTRIBUTION\11_Bookings Not Hedged"
Periode = Date
'La macro s'assure que le répertoire existe, si pas, elle le crée
If Dir(NomRep, vbDirectory) = "" Then MkDir NomRep
'Le répertoire précité doit être subdivisé en Années/Mois, de nouveau si l'on débute un nouveau mois, il faut créer le répertoire
If Dir(NomRep & Format(Periode, "YYYYMM" ), vbDirectory) = "" Then MkDir NomRep & "\" & Format(Periode, "YYYYMM" )
'Ensuite je souhaite sauver le fichier en sous ce dernier répertoire avec format YearMonthDay_Client_Prix volume.xlsx
Client = Year(Date) & Month(Date) & Day(Date) & " " & Range("L7" ) & "_" & Range("N7" ) & " " & Range("H7" ) & ".xlsx"
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & Format(Periode, "YYYYMMDD" ) & "\" & Client
End Sub
Marsh Posté le 11-05-2011 à 14:14:56
Salut,pour la création de dossier, perso j'utilise toujours ceci , à adapter
|
Marsh Posté le 11-05-2011 à 15:46:53
kiki29 a écrit : Salut,pour la création de dossier, perso j'utilise toujours ceci , à adapter
|
Intéressant et surtout très pragmatique. Il va falloir que j'essaie mais entretemps j'ai compris mon erreur, j'ai remplacer ActiveWorkbook.path par NomRep car je créais une confusion.
Pour la vérification du répertoire (s'il existait ou pas) il suffisait de rajouter un "/" à la fin du path de NomRep
MErci en tout cas.
Marsh Posté le 12-05-2011 à 03:27:40
Salut,le balisage du code dans le cas d'une réponse en cliquant sur Ajouter une réponse en bas à gauche, sélection du code, clic sur icône FIXE
sinon en se loguant puis en editant le message ( 2 eme icône à partir de la gauche )
L'utilisation de SmartIndenter pour le code VBA n'est pas non plus un luxe.
Marsh Posté le 11-05-2011 à 09:47:34
Bonjour,
Voilà chaque jour, je rentre des transactions via une template Excel et je souhaite créer un bouton pour sauvegarder et éviter une arborescence dans Explorer plutôt laborieuse.
La macro doit d'abord aller dans un répertoire, ensuite, en fonction de la date du jour, elle doit sauver le fichier dans un sous-répertoire de format YYYYMM. Bien entendu, si le sous-répertoire existe déjà, je ne veux pas le créer à nouveau. Bon jusqu'à cette partie ça va plutôt bien.
Ensuite la template doit se sauver dans le sous-répertoire en question en comprenant les infos date du jour + client+ prix+ volume
C'est là que je coince, car la macro sauve le fichier dans le répertoire et pas le sous-répertoire.
Voici les codes, je pense que l'erreur vient du "ActiveWorkbook.path" mais j'ignore comment le corriger.
Dites, vu que je vais fais beaucoup de deal, IDEALEMENT, j'aurai voulu recréer un sous-sous répertoire YYYYMMDD mais comme je ne maîtrise pas trop bien VBA...
Voici les codes:
Sub ConfoGas()
'Declaration
Dim NomRep As String
Dim Periode As Date
Dim Client As String
'Process
'La macro va dans le répertoire spécifié
NomRep = "C:\Documents and Settings\gcl180\My Documents\Hedges Pendings\"
Periode = Date
'La macro s'assure que le répertoire existe, si pas, elle le crée
If Dir(NomRep, vbDirectory) = "" Then MkDir NomRep
'Le répertoire précité doit être subdivisé en Années/Mois, de nouveau si l'on débute un nouveau mois, il faut créer le répertoire
If Dir(NomRep & Format(Periode, "YYYYMM" ), vbDirectory) = "" Then MkDir NomRep & Format(Periode, "YYYYMM" )
'Ensuite je souhaite sauver le fichier en sous ce dernier répertoire avec format YearMonthDay_Client_Prix volume.xlsx
Client = Year(Date) & Month(Date) & Day(Date) & " " & Range("C3" ) & "_" & Range("D3" ) & " " & Range("E3" ) & ".xlsx"
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & Client
End Sub