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:=xlExcel8

Dans 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 Sub

Dé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

Rechercher des sujets similaires à "vba enregistrer fichier chemin variable"