Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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 25/01/2012, 09h15   #1
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
Par défaut Enregistrer et renommer un fichier Word

* Bonjour, *

Je suis sous excel et je voudrais enregistrer un document word créé après publipostage.

Autrement dit, je voudrais enregistrer le fichier "Lettres types1.docx" qui est créé lorsque l'on fusionne le publipostage. (ce fichier n'est pas encore enregistré, puisqu'il vient juste d'être généré).

Enfin, cerise sur le gâteau, l'enregistrement du fichier "Lettres types1.docx" doit se faire avec renommmage du type "cellule A1" espace "cellule A2" d'une feuille excel.

Je vous joint des petits fichiers pour exemple de ce que j'ai fait mais çà bug sur l'enregistrement et le renommage.
Je n'ai même pas été plus loin pour la récupération des cellules XL pour mettre dans le nom vu que je n'arrive déjà pas à enregistrer.

Fichiers :
Base publi.xls : doc Excel avec une base de client. On coche une ligne qui sera envoyer pour le publipostage.
Courrier original.docx : document du courrier original (comme son nom l'indique!!) servant pour le publipostage.

Par avance, un GRAND MERCI.
Fichiers attachés
Type de fichier : xls base publi.xls (54,0 Ko, 1 affichages)
Type de fichier : docx courrier original.docx (15,0 Ko, 1 affichages)
nino63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 10h38   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie :

Code :
1
2
3
4
5
    appWord.ActiveDocument.SaveAs Filename:="Lettre1.doc", FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
PS. J'ai oublié la cerise :

Code :
1
2
3
4
5
    appWord.ActiveDocument.SaveAs Filename:=[A1] & " " & [A2] & ".doc", FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 11h23   #3
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
Le gâteau est délicieux et la cerise succulente.

Merci çà marche parfaitement bien.

Petit complément (la chantilly!!) :
où est-ce que je modifie mon chemin d'enregistrement de mon fichier, car pour le moment, il me l'enregistre dans "Mes documents"?

y-a-t-il un moyen de de contrôler et d'informer si le fichier existe déjà, car je me rend compte que si le fichier existe, il écrase l'ancien?
2 solutions possible : 1/avertir avant d'écraser l'ancien 2/ rajouter un petit numéro du genre version 1, version 2...

Oulàlà j'entend d'ici l'indigestion qui se profil.

Enorme merci Môssieur Daniel!
nino63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 12h39   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Oui, une indigestion à l'heure de l'apéritif ! J'ai opté pour la facilité. Si le fichier existe, j'ai ajouté la date et l'heure au format aa-mm-dd hhmmss. Tu dois modifier le chemin dans lequel sont enregistré les fichiers. C'est la ligne :

(n'oublie pas le "\" à la fin.)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
    Dim Chemin As String, NomFich As String
    Chemin = "c:\temp\"
    NomFich = [A1] & " " & [A2] & ".doc"
    If Dir(Chemin & [A1] & " " & [A2] & ".doc") <> "" Then
        NomFich = Left(NomFich, Len(NomFich) - 4) & Format(Now, "yy-mm-dd hhmmss") & ".doc"
        MsgBox "Le fichier existe déjà et sera enregistré sous : " & NomFich
    End If
    appWord.ActiveDocument.SaveAs Filename:=NomFich, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 14h00   #5
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
Il y a un problème, le changement de chemin n'est pas pris en compte.

Sauf si j'ai fait une erreur voici mon code à ma sauce (décidément, je suis dans la gastronomie aujourd'hui!)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 '** Sauvegarde du fichier Word **
        'Information du chemin de sauvegarde
        Chemin = "C:\Documents and Settings\ArDenis\Desktop\JURIBASE XL\Méthode publipostage\SAUVEGARDE WORD\"
 
        'Information du nom du fichier
        nomfich_part1 = Worksheets("données").Cells(2, 2)
        nomfich_part2 = Worksheets("données").Cells(2, 3)
        NomFich = nomfich_part1 & " " & nomfich_part2 & ".doc"
 
    If Dir(Chemin & nomfich_part1 & " " & nomfich_part2 & ".doc") <> "" Then
        NomFich = Left(NomFich, Len(NomFich) - 4) & Format(Now, "yy-mm-dd hhmmss") & ".doc"
        MsgBox "Le fichier existe déjà et sera enregistré sous : " & NomFich
    End If
    appWord.ActiveDocument.SaveAs Filename:=NomFich, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
Pour le reste çà m'a l'air pas mal.

Et pour info (vu que je n'ai pas pu tester comme çà ne marche pas!), à quoi sert le "-4" ici =>

Code :
Left(NomFich, Len(NomFich) - 4) & Format(Now, "yy-mm-dd hhmmss") & ".doc"
Merci
nino63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 14h14   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Je me donnerais des claques


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        'Information du nom du fichier
        nomfich_part1 = Worksheets("données").Cells(2, 2)
        nomfich_part2 = Worksheets("données").Cells(2, 3)
        NomFich = nomfich_part1 & " " & nomfich_part2 & ".doc"
 
    If Dir(chemin & nomfich_part1 & " " & nomfich_part2 & ".doc") <> "" Then
        NomFich = Left(NomFich, Len(NomFich) - 4) & Format(Now, "yy-mm-dd hhmmss") & ".doc"
        MsgBox "Le fichier existe déjà et sera enregistré sous : " & NomFich
    End If
    appWord.ActiveDocument.SaveAs Filename:=chemin & NomFich, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 15h25   #7
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
Super merci!!

Inutile de te mettre des claques, çà paraissait tellement évident!

Avant de clôturer le sujet (et passer à la digestion!), serait-il possible de ranger le fichier dans un dossier portant le nom de la cellule A1 (par exemple)?

Ensuite, je te laisse digérer.

Encore , merci j'ai bien pu progresser dans mon projet et dans mes connaissances en VBA.
nino63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h52   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Le dossier, ce n'est pas suffisant, il faut le chemin, par exemple :

"C:\Documents and Settings\ArDenis\Desktop\JURIBASE XL\Méthode publipostage\SAUVEGARDE WORD\"

(sans les guillemets).

Le code serait alors :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        'Information du nom du fichier
        nomfich_part1 = Worksheets("données").Cells(2, 2)
        nomfich_part2 = Worksheets("données").Cells(2, 3)
        NomFich = nomfich_part1 & " " & nomfich_part2 & ".doc"
 
    If Dir([A1] & nomfich_part1 & " " & nomfich_part2 & ".doc") <> "" Then
        NomFich = Left(NomFich, Len(NomFich) - 4) & Format(Now, "yy-mm-dd hhmmss") & ".doc"
        MsgBox "Le fichier existe déjà et sera enregistré sous : " & NomFich
    End If
    appWord.ActiveDocument.SaveAs Filename:=[A1] & NomFich, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 16h15   #9
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
Pardon, je me suis mal exprimé :

Comment on créé un dossier à partir de "mot" stocké dans une cellule.

En gros la même chose que ce que tu as fait pour le fichier, mais dans ce cas ce serait pour un dossier.

Ex d'arborescence :
Dossier "Tartanpion"
Fichier X "Courrier Tartanpion Bonne année"
Fichier Y "Courrier Tartanpion Joyeux noël"


Evidemment, si le dossier existe, inutile de le re-créer.

Oulàlà je sent l'indigestion!
nino63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 16h34   #10
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Le dossier "Tartanpion", il faut savoir où le créer. Tu peux avoir plusieurs dossiers portant le même nom dans deux arborescences différences. par exemple :

Code :
1
2
c:\Tartanpion
c:\Temp\Tartanpion
et même
Code :
c:\Tartanpion\Tartanpion\Tartanpion
Il faut donc connaître le chemin du dossier.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 17h26   #11
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
A désolé, alors par exemple celui là :

C:\Documents and Settings\ArDenis\Desktop\JURIBASE XL\Méthode publipostage\

Dedans on y mettre les dossiers de chaque client.

En espérant que çà t'ira.

Merci
nino63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 17h57   #12
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Ce que je veux dire, c'est que si tu me mets en A1 : "Méthode publipostage", je ne peux pas deviner "C:\Documents and Settings\ArDenis\Desktop\JURIBASE XL", j'ai besoin de la totalité.

Ou alors, c'est obligatoirement : "C:\Documents and Settings\ArDenis\Desktop\JURIBASE XL" auquel cas tu n'as pas à le spécifier.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 18h49   #13
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
Pour le moment, on va dire que c'est toujours dans
C:\Documents and Settings\ArDenis\Desktop\JURIBASE XL\Méthode publipostage\

qu'il y aura tous les dossiers de chaque client; ces même dossiers qui seront créé à partir du nom du client (récupérer dans XL).

A l'intérieur des chaque dossier, il y aura les courrier correspondant au client.

RQ : après si tu as la solution où le chemin n'est pas en dur dans VBA, mais dans une cellule excel, je suis preneur aussi, et dans ce cas, je crérais un onglet "paramètres" qui pourrait être modifiable pas le 1er pelerin qui ne connait pas VBA. Donc plus souple.

Ton choix sera le mien.

MERCI.
nino63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h02   #14
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Le nom du dossier en A1 ne doit pas être suivi d'un "\".

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        'Information du chemin de sauvegarde
        Chemin = "C:\Documents and Settings\ArDenis\Desktop\JURIBASE XL\Méthode publipostage\" & [A1]
        'vérification de l'existence du dossier
        Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        If Not FSO.folderexists(Chemin) Then
            MkDir Chemin
        End If
        Chemin = Chemin & "\"
        'Information du nom du fichier
        nomfich_part1 = Worksheets("données").Cells(2, 2)
        nomfich_part2 = Worksheets("données").Cells(2, 3)
        NomFich = nomfich_part1 & " " & nomfich_part2 & ".doc"
 
    If Dir(Chemin & nomfich_part1 & " " & nomfich_part2 & ".doc") <> "" Then
        NomFich = Left(NomFich, Len(NomFich) - 4) & Format(Now, "yy-mm-dd hhmmss") & ".doc"
        MsgBox "Le fichier existe déjà et sera enregistré sous : " & NomFich
    End If
    appWord.ActiveDocument.SaveAs Filename:=Chemin & NomFich, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 22h55   #15
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 21
Points : 3
Points : 3
Super!!

Merci c'est parfait.

nino63 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 23h58.


 
 
 
 
Partenaires

Hébergement Web