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 04/10/2007, 23h37   #1
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 88
Points : 17
Points : 17
Par défaut Configurer par VBA le nom et le chemin par défaut d'un nouveau document word

Bonjour

Je fais une application excel qui rempli un document word à partir d'un modèle (.dot)
Lorsque j'ouvre mon modèle (depuis VBA sous excel) le document est donc une copie du modèle, mais n'a pas de nom (sauf celui attribué par word lui même "titredumodèle1.doc")

Je souhaiterais que mon code VBA sous excel, lorsqu'il me rempli et m'affiche le document word, le configure aussi avec un nom de chemin et un nom de fichier.

Ce que j'arrive à faire pour le moment :
- je rempli le document, puis je configure le chemin de travail
- le nom de fichier est rempli par un texte invitant l'utilisateur à mettre le bon nom de fichier - ceci est fait en dur dans le modèle .dot

Ce qu'il me manque :
- donner un nom de fichier au document généré

Ce que j'ai testé :
- enregistrer le document généré dès la fin de la conception, mais je ne veux pas que mon code VBA enregistre d'office le document. Je veux que l'utilisateur reste maitre de ce qu'il va enregistrer et quand il va l'enregistrer. Je veux aussi qu'il soit averti lors de la fermeture de word si le document n'avait pas été enregistré.

J'espère avoir été clair. Je résume :
Il faut que je configure le chemin et le nom du document word créé par VBA depuis excel.

merci d'avance
alexsolex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 11h32   #2
Membre à l'essai
 
Inscription : septembre 2007
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 42
Points : 23
Points : 23
Pour la récupération du chemin d'accès à partir d'un .dot, je viens d'être confronté à ce problème récemment.
J'ai utilisé l'instruction suivante et ça marche pour moi :

Code :
1
2
Dim Chemin as string
Chemin = Options.DefaultFilePath(wdCurrentFolderPath)
Ça t'aidera peut être
ippo_master est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 11h50   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Code :
Options.DefaultFilePath(wdUserTemplatesPath) = "c:\local data\"
Les arguments sont nombreux, à toi de choisir celui qui te conviendra le mieux.
__________________
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 09/10/2007, 21h41   #4
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 88
Points : 17
Points : 17
Citation:
Envoyé par Heureux-oli Voir le message
Code :
Options.DefaultFilePath(wdUserTemplatesPath) = "c:\local data\"
Les arguments sont nombreux, à toi de choisir celui qui te conviendra le mieux.
Merci ainsi qu'à ippo_master.
Malheureusement, d'après ce que j'ai pu lire dans la doc, ceci affecte les chemins par défaut de word. Mais je ne veux pas modifier ces éléments.
Certe, je pourrais sans doute les lire, les modifier, puis les réécrire comme à l'original mais cela me semble trop risqué et trop peu orthodoxe.

Je suis tout simplement étonné qu'il n'y ai pas de solution... Ne pourrais t'on pas influer sur la boite de dialogue 'save as' pour, lorsqu'elle sera appelé par l'utilisateur, elle affiche de manière automatique le nom de fichier que je souhaite ?
alexsolex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 21h46   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Parce que peu d'utilisateurs de Word vont jusque là.

Word est principalement un traitement de texte et 99 % des utilisateurs l'utilisent comme tel (une simple machine à écrire)
__________________
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 09/10/2007, 23h28   #6
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 88
Points : 17
Points : 17
Oui j'en suis tout à fait conscient. Mais malgré tout, il n'est pas rare de trouver des sujets d'utilisateurs qui remplissent ou manipulent word depuis excel. Par contre ces gens là, au mieux, enregistrent le document word sous un nom de fichier qui ne change pas.

Je viens d'essayer à la main :
1- j'ouvre une copie de mon dot
2- je modifie la propriété 'title' de ce document (menu fichier > Propriétés... puis onglet Résumé, champ "Titre :")
3- je clic sur enregistrer
Résultat :
au moment d'enregistrer, j'obtient par défaut le nom que j'ai saisi en titre

Donc ceci me conviendrai... mais... (car il y a un mais) cela ne fonctionne pas lorsque je fait la manip en vba depuis excel !!!!
Code :
1
2
3
4
5
6
7
8
9
10
11
12
' POINT 1 équivalent en VBA
'création de la session word
Set WordApp = CreateObject("word.application")    'ouvre une session Word
'création/ouverture du document word
Set WordDoc = WordApp.Documents.Add(Chemin  & FichierPrototype)  'ouvre le document Word
 
'le code suivant me va, il met le chemin actif là où je le souhaite
'change le rep par défaut pour pointer le dossier souhaité
WordApp.ChangeFileOpenDirectory "C:\" 
 
'POINT 2 équivalent VBA
WordDoc.BuiltinDocumentProperties("title").Value = "toto"
ensuite dans mon document word, si je vais voir la propriété titre, j'ai bien "toto" mais lorsque je clic sur 'enregistrer' j'obtient les premiers mots de mon document en guise de nom de fichier.....

Une idée ?
alexsolex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 20h06   #7
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 88
Points : 17
Points : 17
re-

En fait, pour que le titre que je configure dans les builtindocumentproperties soit pris en compte, il faut que je clic absolument sur le bouton OK de la fenêtre propriété de mon document word !

Donc une solution alternative maintenant, serait de "simuler" l'action sur le bouton [ok] de la boite de dialogue 'Propriété' de word, mais là encore je ne sais pas faire...
alexsolex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 23h06   #8
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 88
Points : 17
Points : 17
Salut

ENFIN ! ! !

J'ai trouvé la solution et je pense que ca peut faire cas d'école !

Imaginez que vous remplissiez par excel un document word issu d'un modèle (donc sans titre)
Imaginez que vous vouliez inciter l'utilisateur a enregistrer le document sous un nom unique, généré par excel, mais que vous ne voulez pas lui enregistrer son document de manière automatique.

Alors il suffit d'utiliser la propriété titre du document. (voir le menu Fichier / Propriétés... dans word)
Pour cela 2 possibilités :
1- document.BuiltinDocumentProperties("title") = montitrepardefaut
2- la propriété Dialogs(...)

Comme vous pourrez le constater d'après mes posts précédents, la fonction BuiltinDocumentProperties me posait problème car word ne semblait pas en tenir compte. Je me suis donc orienté vers la propriété Dialogs qui m'a apporté le résultat escompté
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'création de la session word
Set WordApp = CreateObject("word.application")    'ouvre une session Word
'création/ouverture du document word
Set WordDoc = WordApp.Documents.Add(Chemin & FichierPrototype)  'ouvre le document Word
 
'
'Ici on édite le doc word par le code
'
 
'change le rep par défaut pour pointer le dossier des courriers enregistrés
    WordApp.ChangeFileOpenDirectory CheminDesEnregistrements
    WordDoc.Fields.Update   'Met à jour les champs
    WordApp.Visible = True    'affiche le document Word
    WordApp.Activate
'utilisation de la propriété titre du document pour le nom de fichier par défaut
Dim dp As Object
Set dp = WordApp.Dialogs(86)
dp.Title = NumeroCourrier.Value
dp.Execute
La clé magique est alors la commande Execute sur la boite de dialogs qui va alors faire prendre en compte les modifications

Merci à tous en attendant et j'espère que ca sera utile à d'autres !

Mes sources :
http://support.microsoft.com/kb/181441/fr
alexsolex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 08h03   #9
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
__________________
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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h25.


 
 
 
 
Partenaires

Hébergement Web