Excel- Sauvegarder avec un nom special

Résolu
Bonjour,

J'ai 3 questionnaires sous excel, dans 3 classeurs différents, je voudrais savoir comment faire pour les sauvegarder avec pour nom la référence du client donnée dans une cellule particulière [A1] par exemple,
et 3 lettres d'identification du questionnaire (ENT, PLA, DES).

En [A1] est écrit un nombre, référence du client: "rrrr"
le format d'enregistrement doit être: 3 lettres "qqq" se rapportant au questionnaire (ENT, PLA, DES)
et l'année en cours sur 2 chiffres: "yy"
si possible avec séparateur.

ce qui doit donner: yy_rrrr_qqq.xls

en pratique: 10_1234_PLA.xls

quelqu'un a-t-il une idée pour m'aider ? merci.
Configuration: Windows XP
Excel 2002 SP-2

6 réponses

  1. C'est bon! j'ai ça trouvé sur le site en passant par "rechercher"

    Private Sub CommandButton1_Click()
    ActiveSheet.SaveAs Filename:=[A1] & ".xls"
    End Sub

    je mettrai en A1 mon nom formaté comme je veux.
    0
    1. Modérateur
      Salut,
      3 classeurs = 3 macros non?
      classeur PLA :
      en A1 la valeur correspondante (ex : "rrrr")
      ActiveWorkbook.SaveAs Right(Year(Date), 2) & " " & [A1] & " PLA"

      A adapter pour les autres classeurs...
      0
      1. Bonjour pijaku,

        Ca tombe bien, je ne trouvais pas comment avoir les 2 dernier chiffres pour l'année.

        Merci à vous !
        0
        1. J'ai une erreur cependant:
          Voila mon code dans lequel j'ai adapté le format de date que vous m'avez donné, mais l'année n'apparait pas dans le nom du fichier. Seriez-vous dire pourquoi SVP ?

          cherep = "C:\SAUVEGARDE\"
          nom = Right(Year(Date), 2) & "_" & Sheets("questionnaire").Range("A4") & "_PLA"

          ActiveWorkbook.SaveCopyAs Filename:=cherep & nom

          rep = MsgBox("Fichier sauvegardé sous: " & nom, vbYes + vbInformation, "Classeur questionnaire")

          ps: je ne sais ce que font les codes: vbYes et vbInformation car c'est un code que j'ai repris tel quel.

          merci
          0
          1. Modérateur
            Right(Year(Date), 2) renvoie les deux chiffres à droite de l'année "en cours". En l'occurence, renvoie ici "10". Pour obtenir 2010, suffit de mettre : Year(Date).
            Si cela ne fonctionne pas, prodédez "pas à pas" comme suit :
            Dim cherep As String, nom As String
            cherep = "C:\SAUVEGARDE\"
            MsgBox cherep
            nom = Right(Year(Date), 2)
            MsgBox nom
            nom = Right(Year(Date), 2) & "_" & Sheets("questionnaire").Range("A4")
            MsgBox nom
            nom = Right(Year(Date), 2) & "_" & Sheets("questionnaire").Range("A4") & "_PLA"
            MsgBox nom

            Les différentes MsgBox vous indiquent donc pas à pas les noms sous lesquels vous pouvez enregistrer votre fichier. Vous verrez forcément d'où vient l'erreur...
            0
        2. Merci,
          Ca marche maintenant!
          Vous n'aviez pas d'idée pour ces info "vbYes + vbInformation" ? l'aide me dit qu'il n'y a pas d'info dessus.
          0
          1. Modérateur
            "vbyes + vbinformation" est un type de "format" de msgbox. VbYes nous donne un bouton "OK" sur le MsgBox (comme d'hab quoi...) et vbinformation nous stipule que la MsgBox est une information pour l'utilisateur, avec un beau "i" dans la msgbox.
            En fait, il en existe plusieurs types. Les plus utilisés sont :
            VbYesNo qui permet à l'utilisateur de choisir :
            Dim result as String
            result = MsgBox("Voulez-vous vraiment écrire : toto en cellule A1", VbYesNo)
            If result = vbYes then
            [A1] = "toto"
            Else
            Exit Sub
            vbinformation, vbabortretryignore (comme son nom l'indique...), vbcritical (croix rouge dans la msgbox) etc...
            0
        3. On ne peut être plus clair, Merci!
          0