Save as dans une macro MS Excel

Caillou -  
LePierre Messages postés 249 Statut Membre -
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
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. LePierre Messages postés 249 Statut Membre 338
     
    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
    1. Caillou
       
      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
      1. LePierre Messages postés 249 Statut Membre 338 > Caillou
         
        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
      2. Caillou > LePierre Messages postés 249 Statut Membre
         
        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
      3. LePierre Messages postés 249 Statut Membre 338 > Caillou
         
        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