IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Macro pour enregistrer sous / nom du fichier


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Macro pour enregistrer sous / nom du fichier
    Bonjour à tous,

    je recherche depuis un bon moment, mais je n'y parviens pas....

    Je souhaite créer une macro qui permet d'enregistrer un fichier déjà existant sur un lecteur et déjà nommé, afin que ce fichier, au moment où je démarre la macro, soit enregistrer sur un autre lecteur, mais en gardant son nom. Pour le moment, avec le code que j'ai fait, il s'enregistre à chaque fois avec le même nom : test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Macro1()
        ChangeFileOpenDirectory "E:\"
        ActiveDocument.SaveAs FileName:="test01.doc", FileFormat:= _
            wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
            True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
            False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
            SaveAsAOCELetter:=False
    End Sub
    Je ne sais pas comment modifier FileName:=

    Et je cherche également un macro qui permettrait, dans un deuxième cas, d'ouvrir la boîte de dialogue "enregistrer sous" et ce directement dans un répertoire bien précis...

    Merci pour votre précieuse aide...

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Pour récupérer le nom de fichier destinataire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        Dim oFD As FileDialog
        Dim stFichier As String 'Nom complet du fichier
     
        '------------ Selection du fichier
        Set oFD = Application.FileDialog(msoFileDialogSaveAs)
        With oFD
           .Show
           If .SelectedItems.Count = 1 Then
           stFichier = .SelectedItems(1)
           Else
             MsgBox "Sélectionnez un et un seul fichier", vbCritical
     
             Exit Sub 'Abandon
           End If
     
     
        End With
        MsgBox stFichier ' Juste pour test affiche Nom du fichier choisi
    dans ton code de sauvegarde il suffit de remplacer ton nom de fichier : (...).SaveAs FileName:="test01.doc", (..) par la variable chaine qui contient ce nouveau nom :
    (...).SaveAs FileName:=stSauve, (..)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Alors, j'ai mis le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Macro1()
     ChangeFileOpenDirectory "E:\"
        ActiveDocument.SaveAs FileName:=stSauve, FileFormat:= _
            wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
            True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
            False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
            SaveAsAOCELetter:=False
    End Sub
    Mais cela ne marche pas...runtime error 13

    Concernant le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Dim oFD As FileDialog
    Dim stFichier As String 'Nom complet du fichier
     
        '------------ Selection du fichier
        Set oFD = Application.FileDialog(msoFileDialogSaveAs)
        With oFD
           .Show
           If .SelectedItems.Count = 1 Then
           stFichier = .SelectedItems(1)
           Else
             MsgBox "Sélectionnez un et un seul fichier", vbCritical
     
             Exit Sub 'Abandon
           End If
     
     
        End With
        MsgBox stFichier ' Juste pour test affiche Nom du fichier choisi
    Le document ne s'enregistre pas...

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    J'ai l'impression que tu as pris un morceau de code sans comprendre ce qu'il fait.

    BBil a déjà fait la remarque.

    c'est un variable texte, mais si tu ne la remplis pas, ça va pas le faire.
    En fait il faut que cette variable contienne quelque chose.
    Possible qu'elle soit publique et qu'elle contienne du texte, mais dans l'état des chose, on ne peut pas le savoir.

    Que donne simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.SaveAs "c:\temp\a.doc"
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Je me suis peut-être mal exprimé

    Mon but est uniquement qu'il reprenne le nom du fichier et l'enregistre sur un autre lecteur. Le truc c'est que le nom du fichier de base est modifié chaque jour. Ensuite, en démarrant la macro, le but est qu'il aille s'enregistrer dans ce dossier....

    C'est à dire :

    Fichier de base sur le lecteur C :

    Aujourd'hui il se nomme : 03082011
    En exécutant la macro, il va s'enregistrer sous ce nom dans un autre lecteur

    Demain, cela sera : abricot01
    et cette même macro reprendra son nouveau nom pour l'enregistrer toujours dans le même dossier que celui de la veille...

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il faut récupérer le nom du fichier pour l'ajouter au nouveau chemin.
    C'est une très mauvaise idée de changer les répertoires par défaut pour ce genre d'opération.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim stName As String
     
    stName = Activedocument.Name
     
    ActiveDocument.SaveAs FileName:= "E:\BlaBla\" & stName
    Si tu veux ajouter le chemin du répertoire de façon dynamique en fonction du choix de l'utilisateur, il faut passer par la solution que te donne BBil.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim oFd As FileDialog
    Dim stName As String
     
    stName = Activedocument.Name
    Set oFd = Application.FileDialog(msoFileDialogFolderPicker)
     
    oFd.Show
    ActiveDocument.SaveAs FileName:= oFd.SelectedItems(1) & stName
    Set oFd = Nothing
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Ok, cette fois-ci j'y suis L'enregistrement d'office sur le lecteur en question fonctionne très bien.

    Par contre, je bug toujours avec la 2ème possibilité d'enregistrer sous et qui ouvre un dossier. J'ai mis ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Macro1()
    Dim oFD As FileDialog
    Dim stName As String
     
    stName = ActiveDocument.Name
    Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
     
    oFD.Show
    ActiveDocument.SaveAs FileName:="E:\test01\" & stName
    Set oFD = Nothing
     
    End Sub
    La boîte de dialogue pour enregistrer sous s'ouvre bien mais, je ne suis jamais dans le bon répertoire...car pour moi, je souhaite arriver dans le répertoire E:\test01\ dans cet exemple...

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pourquoi as-tu changé le code que je donne qui est "dynamique" pour le répertoire par un code fixe ??

    VS

    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Car j'aimerais arriver directement dans le bon répertoire...en mettant ton code, il me met dans un répertoire quelconque...

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    il met le répertoire choisi par l'utilisateur au moyen de la boîte de dialogue.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Ok, merci beaucoup, cette fois-ci tout est bon !

  12. #12
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 12
    Points : 13
    Points
    13
    Par défaut problème de sauvegarde de fichier joint
    Bonjour,
    je reviens sur votre discussion déjà assez ancienne, mais je pense que mon problème est dans le même genre que le vôtre, quoique un peu différent.
    je m'explique :
    je reçois chaque jour un mail d'un fournisseur, à ce mail est joint un fichier .TXT que j'importe en Excel et que je traite à l'aide d'un programme "maison"; jusque là, tout va bien.
    Mon problème est que mon fichier toto.txt est enregistré dans le répertoire "téléchargementé (ou downloads) et à chaque fois, il ajoute un (1) soit toto.txt
    toto(1).txt
    toto(2).txt
    etc
    or mon programme Excel va chercher "Toto.txt"
    Il faudrait que chaque nouvel enregistrement écrase l'ancien.
    Comment faire ?

    Merci déjà de votre aide

  13. #13
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est dans Outlook que le code devra être utilisé et pas dans Word.
    Vaut mieux poser cette question dans le forum Outlook.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA - Récupération d'une cellule pour enregistrer un nom de fichier
    Par Jane92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/06/2015, 09h45
  2. Macro pour enregistrer sous Word
    Par khech dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/05/2015, 06h04
  3. Réponses: 15
    Dernier message: 06/06/2010, 16h35
  4. [VB] macro pour enregistrer sous
    Par CélineM dans le forum SDK
    Réponses: 1
    Dernier message: 07/06/2007, 12h28
  5. macro pour enregistrer sous
    Par macromega dans le forum Général VBA
    Réponses: 2
    Dernier message: 03/05/2007, 19h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo