VBA enregistrer sous fichier Excel, chemin avec variable
Bonjour
Je suis plutôt débutante en VBA et j'ai besoin d’un petit coup de main SVP.
Je crée un nouveau dossier, je l’enregistre sur le chemin indiqué et je nomme ce dossier avec une variable DATE1 (variable DATE1 est saisie par l'utilisateur via InputBox)
J'utilise le code si dessous et ca marche bien
MkDir "C:\Users\" & DATE1
Ensuite je crée un nouveau classeur Excel avec Workbooks.Add
Ce nouveau classeur Excel je veux l'enregistrer dans le dossier que je viens de créer et je veux le nommer avec 2 variables ABC et DATE1 ( les 2 variables sont saisies par l'utilisateur via InputBox) , mais je n'arrive pas
Si j'utilise
ActiveWorkbook.SaveAs "C:\Users\" & DATE1 & ABC
le fichier s'enregistre dans le dossier "C:\Users" et pas dans le dossier qui porte le nom de ma variable DATE 1
J'ai testé :
ActiveWorkbook.SaveAs "C:\Users\" & DATE1\ & DATE1 & ABC
mais ca ne marche pas
comment je peux faire pour indiquer le chemin avec une variable pour y enregistrer mon classeur Excel SVP?
Bonjour ania,
Un exemple de sauvegarde d'un fichier dans le même dossier qu'il a été ouvert, avec le même nom, mais en changeant l'extension :
'Enregistrement du nom dans la variable myFile et du chemin dans myPath
myPath = ActiveWorkbook.Path & Application.PathSeparator
myFile = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:=myPath & myFile, FileFormat:=xlExcel8Dans ton cas je pars du principe que tu crée bien ton fichier DATE1
Le chemin devient donc "C:\Users\DATE1"
Je pense que c'est le & devant le DATE 1 qui fait bugger (2 ème formule :il voit un chemin de ce genre -> "C:\Users\&DATE1"
Et ne trouvant pas le dossier &DATE1 il se rabat sur le précedant Users.)
A vérifier ^^
Merci de ta réponse Timothe
en fait DATE 1 est une variable qui va varier à chaque fois
C:\Users\DATE1
ca ne marche pas car dossier nommé DATE1 existe pas
par exemple: l'utilisateur va définir la variable DATE1 via inputbox en tant que "TEST", donc je vais créer le dossier TEST et par la suite le fichier Excel je veux l'enregistrer dans le dossier TEST. Mais selon ce que l'utilisateur saisie en tant que variable DATE1 , le dossier de destination va pas être tjrs le même.
le fichiers Excel je veux l'enregistrer dans le classeur précédemment créer grâce à la variable, donc le chemin doit contenir cette même variable...je pense
Re, Si tu as la possibilité de joindre ce que tu as déjà fait, je pense que je visualiserais mieux et ça ira beaucoup plus vite.
J'ai essayé, je pense que c'est la variable dans le chemin qui pose problème, je vais regarder voir si y a pas moyen de lui faire accepter.
Sub Macro1()
' Macro1 Macro
' Créer le dossier suivant le contenu de la cellule A2
Dim Dossier As String, Fichier As String, Chemin As String
Dossier = Cells(2, 1).Value
MkDir "C:\Users\" & Dossier
' Enregistre le fichier suivant le contenu de la cellule C2
Fichier = Cells(2, 3).Value
Chemin = "C:\Users\" & Dossier
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xls"
End SubDésolé d'avoir mis aussi longtemps, je ne sais pas par quel "heureux hasard" le chemin que j'ai copié-collé a décidé de virer un espace, résultat message d'erreur, impossible d'effectuer la fonction SaveAs... (et après 3 rage-quit et le meurtre de plusieurs chatons)
Vu que je n'avais pas ton fichier, j'ai placé les variables (nom du dossier et du fichier dans des cellules de la feuille 1).
Tu as la possibilité de changer le Format (extension) etc
Le gros défaut c'est que là on a pas de tests vérifiant si le dossier que l'on veut créer éxiste déjà. Si jamais il éxiste, le programme s'arrète et message d'erreur.
J'essaierai de regarder pour voir plus tard en faisant deux conditions :
Si le dossier éxiste déjà, passé à la création du Fichier
Sinon créer le dossier, puis le fichier.
Bonjour Timothe
J'ai pas pu envoyer mon fichier hier, désolée. Et quand je voulais te l'envoyer ce matin j'ai vu ta réponse.
Avec ta proposition ca marche très bien.
J'ai crée une troisième variable et j'ai utilisé ton code pour faire "save as".
Et CA FONTIONNE
Je suis trop contente
Merci beaucoup de ton aide.
Pour voir si le fichier existe déjà ou pas je passe par ca:
Dim fso
Dim folder As String
folder = "C:\Users\" & DATE1 'DATE1 ma variable
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(folder) Then
Shell "Explorer.exe C:\Users\" & DATE1
'MsgBox "dossier d'enregistrement existe"
Else
MkDir "C:\Users\" & DATE1
et ca marche correctement
Merci encore une fois
Ania
Ania
Bonjour ania,
Bien joué pour la vérification de l'éxistence du dossier, j'avais manqué de temps pour m'y plonger du coup.
Bonne continuation sur ton programme et
Bonjour,
J’ai un fichier copie si jointe avec une macro qui indique les chemins de fichuer1 et fichier 2. Sachant que les fichiers 1 & 2 se trouvent dans le même dossier que mon fichier macro et que j’exécute cette macro à partir de plusieurs postes de travail. Je voudrais la manière remplacer les chemin par une variable
Merci de votre réponse
Cordialement
Jean-Pierre