Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2011, 03h21   #1
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
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 :
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...
vinzu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 07h33   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Pour récupérer le nom de fichier destinataire :

Code :
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, (..)
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 09h06   #3
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
Alors, j'ai mis le code suivant :

Code :
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 :
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...
vinzu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 10h08   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 324
Points : 29 225
Points : 29 225
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 :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 11h55   #5
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
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...
vinzu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 12h04   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 324
Points : 29 225
Points : 29 225
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 :
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 :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 15h49   #7
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
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 :
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...
vinzu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 17h17   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 324
Points : 29 225
Points : 29 225
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 19h43   #9
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
Car j'aimerais arriver directement dans le bon répertoire...en mettant ton code, il me met dans un répertoire quelconque...
vinzu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 23h35   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 324
Points : 29 225
Points : 29 225
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 17h43   #11
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
Ok, merci beaucoup, cette fois-ci tout est bon !
vinzu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h17.


 
 
 
 
Partenaires

Hébergement Web