Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellule

Pifpaf

XLDnaute Nouveau
Bonjour a tous,

Je souhaite créer une macro me permettant d'enregistrer un fichier dans un répertoire défini (qui ne changera pas) mais en lui donnant comme nom, le contenu de la cellule (L6C8).xls ou mieux .pdf

Merci de votre aide.
 

thomlau

XLDnaute Occasionnel
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

Bonjour Pifpaf.

grace à une recherche, j'ai trouvé une portion de code que j'ai adapté :

Code:
Sub enregistre_sous()

Application.DisplayAlerts = False
nomsave = Sheets("Feuil1").Range("L6").Value
ThisWorkbook.SaveAs (nomsave)
Application.DisplayAlerts = True

End Sub

Modifier la cellule L6 et cliquez sur le bouton Enregistrer pour voir le résultat.

PS : Je ne sais pas si on peut faire cette manip avec le contenu d'un plage de cellules (L6C8), sauf si ces cellules sont fusionnées.

++
 

Pièces jointes

  • test2.zip
    11.8 KB · Affichages: 111
  • test2.zip
    11.8 KB · Affichages: 113
  • test2.zip
    11.8 KB · Affichages: 115

thomlau

XLDnaute Occasionnel
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

re

Bon, j'ai trouvé la solution...

remplacer le code du module1 par celui-ci :

Code:
Sub enregistre_sous()

Application.DisplayAlerts = False

nom = Sheets("Feuil1").Range("L6")
prénom = Sheets("Feuil1").Range("C8")
nomsave = nom & " " & prénom
ThisWorkbook.SaveAs (nomsave)

Application.DisplayAlerts = True

End Sub

A bientôt
 

Orodreth

XLDnaute Impliqué
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

Bonjour Pifpaf, ThomLau, le fil, le forum.

Ton code va générer un problème je pense ThomLau, à mon avis il faut rajouter l'extension d'excel, ce qui donne:
Code:
Sub enregistre_sous()

Application.DisplayAlerts = False

nom = Sheets("Feuil1").Range("L6")
prénom = Sheets("Feuil1").Range("C8")
nomsave = nom & " " & prénom & [COLOR="Red"]".xls"[/COLOR]
ThisWorkbook.SaveAs (nomsave)

Application.DisplayAlerts = True

End Sub

@PifPaf
Je doute que tu puisses enregistrer directement en pdf, sachant qu'il faut passer par une impression virtuelle.
Et je n'ai jamais trouvé le moyen de passer ça en code VBA
 

Pifpaf

XLDnaute Nouveau
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

OK, ca fonctionne super bien. Mais ca ne m'enregistre pas le fichier dans le répertoire souhaité.
Je pense qu'il faut ajouter une ligne de commande mias la encore, je ne connais pas le code...

Je vais donc vous solliciter à nouveau.
voici le chemin de destination de sauvegarde: "K:\Fax - Mail"

Merci encore pour votre aide
 

thomlau

XLDnaute Occasionnel
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

Re le fil...

Code:
Sub enregistre_sous()

Application.DisplayAlerts = False

nom = Sheets("Feuil1").Range("L6")
prénom = Sheets("Feuil1").Range("C8")
nomsave = "K:\Fax - Mail\" & nom & " " & prénom & ".xls"

ThisWorkbook.SaveAs (nomsave)

Application.DisplayAlerts = True

End Sub

J'ai testé, ça fonctionne...
 

Orodreth

XLDnaute Impliqué
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

@Thomlau

ok, merci pour l'info

@Pifpaf
tout dépend si ton fichier est déjà enregistré dans un classeur à l'origine ou pas.

Si c'est le cas, ce code devrait t'aider:

Code:
Sub enregistre_sous()

Application.DisplayAlerts = False

nom = Sheets("Feuil1").Range("L6")
prénom = Sheets("Feuil1").Range("C8")
nomsave = Activeworkbook.path & "\" & nom & " " & prénom & ".xls"
ThisWorkbook.SaveAs (nomsave)

Application.DisplayAlerts = True

End Sub

Mais si tu n'as pas déjà enregistré le classeur à l'origine (sans valeur), ça devient plus complexe :(
 

Pifpaf

XLDnaute Nouveau
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

Finalement, j'ai un problème lié à l'enregistrement avec un ordinateur (sur 10) :mad:
Les chemins d'accès étant lié au réseau, la lettre pour tout le monde est "K:\", sauf pour un PC, qui est "N:\"

Est-il possible de définir dans la macro, si le premier chemin de fonctionne pas, aller vers l'autre chemin??????

J'y crois pas du tout, mais sait-on jamais???
 

Orodreth

XLDnaute Impliqué
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

Je me trompe peut-être, mais il me semble que la question ne devrait même pas se poser avec le code que je t'ai fourni :confused:

Enfin, si tu as l'erreur parce que tu utilises le chemin en dur dans le code, tu peux faire avant un test comme suit:

Code:
If Dir(Ton_chemin_d'accès) = "" then
Application.DisplayAlerts = False

nom = Sheets("Feuil1").Range("L6")
prénom = Sheets("Feuil1").Range("C8")
nomsave = "N:\Fax - Mail\" & nom & " " & prenom & ".xls"

ThisWorkbook.SaveAs (nomsave)

Application.DisplayAlerts = True
else
Application.DisplayAlerts = False

nom = Sheets("Feuil1").Range("L6")
prénom = Sheets("Feuil1").Range("C8")
nomsave = "K:\Fax - Mail\" & nom & " " & prenom & ".xls"

ThisWorkbook.SaveAs (nomsave)
Application.DisplayAlerts = True
End if
End Sub

Bon, ça pourrait être amélioré, mais essaye déjà avec ça ou avec ma version, qui est le activeworkbook.path
 

Pifpaf

XLDnaute Nouveau
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

@Orodreth

Non, ça ne fonctionne pas. Par contre, j'ai réussi à donner comme non de fichier une cellule. Voici donc le code que j'utilise et qui marche:

Sub save()
Application.DisplayAlerts = False
nomsave = Sheets("Fax - Mail").Range("H6").Value
Name = "K:\Fax - Mail\" & nomsave & ".xls"
ThisWorkbook.SaveAs (Name)
Application.DisplayAlerts = True
End Sub


Bien sur il marche quand le Nom du répertoire de destination est "K:\Fax - Mail", mais si le répertoire de destination est "N:\Fax - Mail", ça ne fonctionne pas... (normal)...

Avec ton code: If Dir("K:\Fax - Mail\") = "" then, quand je déroule la macro pas à pas, il déroule la macro normalement même s'il n'existe pas de répertoire "K:\Fax - Mail\".

Voici le code que j'ai testé avec ta méthode:
If Dir("K:\Fax - Mail\") = "" then
Application.DisplayAlerts = False
nomsave = Sheets("Fax - Mail").Range("H6").Value
Name = "N:\Fax - Mail\" & nomsave & ".xls"
ThisWorkbook.SaveAs (Name)
Application.DisplayAlerts = True
else
Application.DisplayAlerts = False
nomsave = Sheets("Fax - Mail").Range("H6").Value
Name = "K:\Fax - Mail\" & nomsave & ".xls"
ThisWorkbook.SaveAs (Name)
Application.DisplayAlerts = True
end if


Peut etre que j'ai mal saisi???
 

Orodreth

XLDnaute Impliqué
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

Re

Essaye ça:

Code:
If Dir("K:\Fax - Mail\", [COLOR="Red"]vbdirectory) <>[/COLOR] "" then
Application.DisplayAlerts = False
nomsave = Sheets("Fax - Mail").Range("H6").Value
Name = "K:\Fax - Mail\" & nomsave & ".xls"
ThisWorkbook.SaveAs (Name)
Application.DisplayAlerts = True
else
Application.DisplayAlerts = False
nomsave = Sheets("Fax - Mail").Range("H6").Value
Name = "N:\Fax - Mail\" & nomsave & ".xls"
ThisWorkbook.SaveAs (Name)
Application.DisplayAlerts = True
end if

ça devrait être mieux je pense
 

Pifpaf

XLDnaute Nouveau
Re : Créer une macro enregistrer donnant comme nom de fichier le contenu d'une cellul

@Orodreth
Ca à l'air de fonctionner. Maintenant je n'aurais confirmation que demain. Je posterais un message pour vous donner les conclusions.

En tout les cas, merci à tous pour votre aide.
 

Discussions similaires