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/02/2011, 16h29   #1
Membre à l'essai
 
Inscription : décembre 2005
Messages : 120
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 120
Points : 23
Points : 23
Par défaut Modification d'un modèle .DOT pour récupération d'infos dans un .TXT

Bonjour à tous,

Après bien des recherches je ne trouve pas de solution à mon souci :/

Mon problème :
Je dois compléter des fichiers .DOC générés à partir de modèles en word .DOT pour remplir le nom, prénom, adresse etc ...
Ces informations seront à importer depuis un fichier TXT.
Les informations de ce fichier TXT sont modifiées par une application externe, donc à chaque appel du .DOT, les informations du TXT sont différentes.

L'idée serait qu'à la création du .DOC à partir du modèle .DOT, une macro du modèle aille chercher les informations du fichier TXT pour remplir directement le doc.

Structure du fichier TXT :
aaa;bbb;ccc
aaa;bbb;ccc
...

Le problème c'est que je n'arrive pas à ajouter de macro dans le .DOT, il est protégé. Y'a-t-il une procédure qui peut être appelé à l'ouverture du .DOT, permettant de lancer une macroVBA ?

Ma question serait, est ce que c'est possible ? Si oui auriez vous des pistes ou exemple éventuellement ?

D'avance merci
thefutureisnow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 17h42   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Salut,

On peut envisager deux options, l'une serait de mettre le code dans le normal.dot et de vérifier le modèle qui est utilisé pour lancer ou non le code.
Une seconde est l'utilisation d'un complément qui ferait la même chose.
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 23h09   #3
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 377
Points : 3 377
Salut TheFutureIsNow,

Je pense que dans ton cas, on pourrait aussi envisager un publipostage avec ton .txt comme source de données. Mais le vrai spécialiste du publipostage est Heureux-Oli, et s'il ne te l'a pas proposé c'est que soit plus compliqué soit carrément pas possible.

@+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2011, 07h41   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Citation:
Envoyé par Sepia Voir le message
Salut TheFutureIsNow,

Je pense que dans ton cas, on pourrait aussi envisager un publipostage avec ton .txt comme source de données. Mais le vrai spécialiste du publipostage est Heureux-Oli, et s'il ne te l'a pas proposé c'est que soit plus compliqué soit carrément pas possible.

@+
Salut Sepia,

Impossible, je ne sais pas, mais j'avais lu ça :
Citation:
donc à chaque appel du .DOT, les informations du TXT sont différentes.
Et si le contenu change, pas de problème, si c'est la forme qui change ?
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 02h09   #5
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 377
Points : 3 377
Citation:
Envoyé par Heureux-oli Voir le message
Et si le contenu change, pas de problème, si c'est la forme qui change ?
En effet, c'est uniquement comme ça que j'envisageais les choses mais tu as raison de le préciser. Il faut que la structure soit proche (mais comme pour une feuille Excel pour laquelle les colonnes ont la même structure mais pas les mêmes valeurs).

@+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 09h34   #6
Membre à l'essai
 
Inscription : décembre 2005
Messages : 120
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 120
Points : 23
Points : 23
Merci à tous de vos réponses, je dois avouer être assez paumé dans ce développement.
Je vais essayer de vous expliquer le cas plus en détails :

J'ai une appli en VB (je ne peux pas la modifier), qui se charge de créer une multitude de documents types pour chacun des postes en fonction d'un dossier.
Ces documents types sont stockés dans un dossier modèle, ce sont des .dot
Le programme se charge de créer un .DOC renommé exemple : N°dossier_facture.doc à un autre endroit du disque à partir de ce .DOT.

Le problème : le .DOC généré contient des champs grisés à remplir, et ma mission est de les remplir automatiquement.
Pour cela, je dois à l'utilisation du .DOT, lire un fichier txt qui contient la référence du dossier, à partir de ce numéro, je dois faire un parcours de plusieurs dossiers pour récupérer un autre .txt et remplir les différents champs en fonction du document type et de ce dernier fichier txt. Ca devrait donc généré un document .DOC, préformaté et prérempli avec les informations du destinataire.

Alors pour l'instant je suis devant mes .DOT, je rentre en mode Visual Basic Editor, mais je ne sais pas par où commencer, j'ai 3 catégories : normal, project et template project.
Mon idée serait de trouver une méthode qui serait appelé à la création du .DOC par le .DOT. Mais comme je ne connais pas les modèles word et que le VBA je suis assez nouveau, c'est assez délicat.

Quelqu'un aurrait une piste de stratégie à adopter ?
D'avance merci encore !
thefutureisnow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h14   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 219
Points : 29 219
Salut,

Tu ne réponds pas à nos interrogations sur la structure des données.

Si tu as des champs grisés, ce sont peut-être des champs de formulaire.
Si tu souhaites faire un document avec un modèle, c'est pas au départ du modèle que tu dois travailler, mais au départ de l'application.

Code :
Application.Documents.Add "LeCheminDeMonTemplate.dot"
Et on peut alors lancer des procédures sur l'évènement New du modèle.

http://heureuxoli.developpez.com/office/word/vba-all/
http://heureuxoli.developpez.com/office/word/vba-word/
http://heureuxoli.developpez.com/off...d/creermodele/
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 09h45   #8
Membre à l'essai
 
Inscription : décembre 2005
Messages : 120
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 120
Points : 23
Points : 23
Merci à tous de vos réponses, je suis parvenu à avancer un peu via la procédure :
Code :
1
2
3
4
5
Private Sub Document_New()
 
Call mafonction
 
End Sub

Ensuite je mets dans le signet les informations que j'ai trouvé via la fonction :

Code :
1
2
3
Dim objRange As Range
Set objRange = ActiveDocument.Bookmarks.Item("Texte2").Range
objRange.Text = Tableau(0)
Ce code fonctionne pour modifier le .DOT par la méthode Document_Open(), il me remplace bien le texte dans le signet du .DOT, mais mon objectif est de modifier le .DOC et non le .DOT, donc j'utilise la méthode Document_New()

Le problème c'est que j'ai un message d'erreur pour l'édition du signet :
Citation:
Impossible de modifier cette zone. La protection du document est activé.
Problème car le fichier est ouvert mais pas encore enregistré ?
thefutureisnow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 10h13   #9
Membre à l'essai
 
Inscription : décembre 2005
Messages : 120
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 120
Points : 23
Points : 23
EDIT, solution :

ActiveDocument.FormFields("Texte1").Result = "bla bla"
thefutureisnow 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 08h24.


 
 
 
 
Partenaires

Hébergement Web