Save as dans une macro MS Excel

Fermé
Caillou - 18 juin 2008 à 20:05
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 - 20 juin 2008 à 10:09
Bonjour,

J'ai une question qui peut paraitre un peu stupide, je suis en train de creer une macro dans un fichier MS Excel qui va effectuer quelques commandes, la derniere de ces commandes est de faire un save as et d'aller enregistrer ce fichier dans un répertoire donné. Jusque la tout va bien, par contre j'aimerais que le fichier "s'auto-nomme" et que l'utilisateur ne soit pas obligé de nommer lui meme le fichier. La raison c'est qu'il sera plus facile de les classer par la suite

Les informations nécessaires pour le nom se trouve dans 3 cellules différentes dans mon fichier excel. Il s'agit de la date, du # du client ainsi que son nom.

Est-ce possible de faire ca soit de auto-nommer un fichier en fonction d'infos déja disponibles dans un fichier?


Merci de votre réponse
Caillou
A voir également:

1 réponse

LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
18 juin 2008 à 21:22
bonjour

soit tes données pour le nom de fichier en A2, B2 et C2.
Voici un petit bout de code qui devrait te convenir :
Sub Enregistrer()
    Chemin = ActiveWorkbook.Path
    DateFich = Cells(2, 1).Value
    An = CStr(Year(DateFich))
    Mois = CStr(Month(DateFich))
    Jour = CStr(Day(DateFich))
    DateFich = An & "-" & Mois & "-" & Jour
    RefClient = CStr(Cells(2, 2).Value)
    NomClient = Cells(2, 3).Value
    
    ActiveWorkbook.SaveAs Filename:=Chemin & "\" & DateFich & "_" & _
        RefClient & "_" & NomClient & ".xls", FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
End Sub

à plus
0
Merci beaucoup ca fonctionne, par contre j'ai un léger probleme, le fichier s'enregistre automatiquement sur le lecteur C et je suis incapable de lui donner le chemin que je veux, voici la partie de code (incluant celle que tu m'a donné)
----------------------------------------------
Sub test()

ActiveWorkbook.ActiveSheet.Select
ActiveWorkbook.ActiveSheet.Copy
Calculate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Chemin = ActiveWorkbook.Path
DateFich = Cells(2, 1).Value
An = CStr(Year(DateFich))
Mois = CStr(Month(DateFich))
Jour = CStr(Day(DateFich))
DateFich = An & "-" & Mois & "-" & Jour
RefClient = CStr(Cells(2, 2).Value)
NomClient = Cells(2, 3).Value


ChDir "C:\Documents and Settings\caillou\Mes documents\Discount Request Form"
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & DateFich & "_" & _
RefClient & "_" & NomClient & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False

End Sub
----------------------------

j'aimerais qu'il aille s'enregistrer sous ChDir "C:\Documents and Settings\caillou\Mes documents\Discount Request Form", aussi est-ce que le user caillou peut créer probleme lorsque j'enverai mon ficher contenant la macro a divers users car lorsqu'ils se serviront de la macro j'aimerais que le fichier aille s'enregistrer sous leur lecteur C dans le document Discount Request Form qu'ils auront créé préalablement

Autre question, dans le code j,ai mis calculate car mon fichier aura des formules et ensuite il va faire son copie valeur, mais je veux m'assurer que le calcul sera fait avant de faire son copie valeur, le recalcul prend 5-10secondes, suis-je mieux de mettre un "wait" de quelques secondes et ensuite faire en sorte que la macro continue. Si oui est-ce que tu connais le code pour mettre ce "wait"

Merci beaucoup!

Caillou
0
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337 > Caillou
19 juin 2008 à 18:54
bonjour

remplace dans ton code :
ChDir "C:\Documents and Settings\caillou\Mes documents\Discount Request Form" 
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & DateFich & "_" & _ ...

par ceci :
Chemin2 = "C:\Documents and Settings\caillou\Mes documents\Discount Request Form" 
ActiveWorkbook.SaveAs Filename:=Chemin2 & "\" & DateFich & "_" & _ ...


pour ta deuxième question, plutôt qu'un wait utilise : DoEvents

à plus
0
Caillou > LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012
19 juin 2008 à 19:33
Concernant le chemin ( je n,ai pas encore essyé le doevents) je dois faire quelque chose de pas bien car ca ne fonctionne pas, ca bogue au chemin2
-----------------------------------------------------------
ActiveWorkbook.ActiveSheet.Select
ActiveWorkbook.ActiveSheet.Copy
Calculate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Chemin = ActiveWorkbook.Path
DateFich = Cells(2, 1).Value
An = CStr(Year(DateFich))
Mois = CStr(Month(DateFich))
Jour = CStr(Day(DateFich))
DateFich = An & "-" & Mois & "-" & Jour
RefClient = CStr(Cells(2, 2).Value)
NomClient = Cells(2, 3).Value


Chemin2 = "C:\Documents and Settings\caillou\Mes documents\Discount Request Form"
ActiveWorkbook.SaveAs Filename:=Chemin2 & "\" & DateFich & "_" & _
RefClient & "_" & NomClient & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False


-------------------

encore une fois merci
Caillou
0
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337 > Caillou
20 juin 2008 à 10:09
bonjour
Chemin2 = "C:\Documents and Settings\caillou\Mes documents\Discount Request Form" 
es-tu certain du nom de tes répertoires inscrits dans la définition de "Chemin2" ?

à plus
0