Aide - Recherche - Membres - Calendrier
Version complète : macro à lancer sur plusieurs fichiers
Trucs et astuces Express > Discussions Informatique > Microsoft Office 2003 / 2007 > Word
CLIO2003
J'ai une chaîne de caractères à remplacer dans les en-têtes de 900 modèles de lettre, faire une macro unitaire je sais faire, mais pour l'automatiser, j'attends votre aide - merci
Helger
Hello.
Ils sont tous dans le même répertoire, ces documents ? ermm.gif
CLIO2003
les fichiers sont tous dans le même répertoire, et c'est pour modifier les en-têtes de ces fichiers qui sont des modèles.
merci
Helger
OK, je mate. icon_mrgreen.gif
Groumphy
Hello,

Pourquoi ne pas indiquer les voies en place de fournir un code full ?

Alors passons en revue :

1. Ouvrir un l'application via le "Shell" Office :
CODE
Shell("C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE", vbNormalNoFocus)  

Evidement le chemin est personnalisable. S'il faut on peut même lire la base de registre pour savoir ou est installé l'application.
2. Ouvrir un document Word :
CODE
Workbooks.Open Filename:= _
   "\\_chemin_complet_\Fichier_word.doc"


Tu auras évidement déclaré cela dans une variable de type String pour chacun des cas.

3. compter les documents, une boucle simple stockée dans une variable de type Byte qui informe que chaque objet (nouvelle variable de type objet) de type document avec l'extension .doc incrémente la variable de 1
Ceci devant ressembler à une boucle du style :
CODE
Dim i,
While i < 10
i = i + 1
End While

Et de fait pour terminer l'ouverture des documents.

La macrocommande en elle même ne prend que 69Ko de mémoire mais multiplié par le nombre de document cela risque de poser problème. De fait, à chaque fois n'oublie pas de libérer la mémoire (et donc de ne pas stocker tes variables dans le scope Global), je dirais même de fermer le document en final (un simple WorkBook.Close) et de recommencer la boucle type I.

A te lire,

G.
jmctap
Merci à G. pour ses infos, mais pour moi c'est trop succinct !
Mon besoin est proche de celui exprimé au départ : il me faut faire les mêmes remplacements (de style et de texte) sur un grand nombre de doc (270 ou plus), tous situés dans le même répertoire, mais portant des noms quelconques (pas de boucles possibles sur les noms).
Je pensais faire une macro, dans un doc word à part, qui ouvre successivement chacun des doc à traiter, lance la macro de base qui fait les remplacement (ça je sais faire), et ferme le doc avant de passer au suivant.
C'est beau la théorie... mais en pratique, même avec les infos de G., je n'y arrive pas.
(je débute en VB Word, au cas où vous en auriez douté).

Y a-t-il un assistant sur le forum.

TRES GRAND MERCI !

JMC
Groumphy
Hum, tu penses pas qu'on va te donner la solution non ? icon_mrgreen.gif T'es ici pour apprendre.
Toutefois en me relisant, je me dis qu'il vaut mieux utiliser l'objet Application en place du Shell.

Le principe de boucle reste le même et l'indice est qu'il faut simplement faut un Count des documents...

Voila,
Ceci une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.