Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1372 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro Word 2010 / Autoexec replace

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro Word 2010 / Autoexec replace

n°2172403
cfmreggae
Posté le 23-01-2013 à 18:33:23  profilanswer
 

Bonjour,
 
Malgré mes recherches je n'arrive pas au bout de mon objectif...
Je cherche à ce que, dès l'ouverture du document, et dans tout le document dans son ensemble, une chaine soit remplacée par une autre (en l'occurence, "**" par "*   *" ).
 
C'est ma toute première macro, je manque d'expérience de base dans ce sujet.
 
Voici mon code :
 

Code :
  1. Sub AutoExec()
  2. '
  3. ' AutoExec Macro
  4. '
  5. '
  6. Call REMPLACE
  7. End Sub
  8. Sub REMPLACE()
  9. '
  10. ' REMPLACE Macro
  11. '
  12. '
  13.     Selection.WholeStory
  14.     Selection.Find.ClearFormatting
  15.     Selection.Find.Replacement.ClearFormatting
  16.     With Selection.Find
  17.         .Text = "**"
  18.         .Replacement.Text = "*   *"
  19.         .Forward = True
  20.         .Wrap = wdFindAsk
  21.         .Format = False
  22.         .MatchCase = False
  23.         .MatchWholeWord = False
  24.         .MatchWildcards = False
  25.         .MatchSoundsLike = False
  26.         .MatchAllWordForms = False
  27.     End With
  28.     Selection.Find.Execute Replace:=wdReplaceAll
  29. End Sub


 
Quand le parsing atteint "Selection.WholeStory" il ne comprend à priori pas la variable "Selection" (peut-être parce qu'à l'ouverture exacte du document et donc à l'éxécution de la macro, le curseur n'a pas encore été initialisé dans la page)...?
 
Je suis preneur de toute solution, merci beaucoup d'avance !
 
De plus, il s'agit d'un document de publipostage ouvert par un progiciel, et je souhaite que la macro s'éxécute sur les données après la fusion automatique (détail important mais si je peux déjà arriver à faire que la macro se lance au démarrage, c'est déjà un progrès)..!

mood
Publicité
Posté le 23-01-2013 à 18:33:23  profilanswer
 

n°2172414
Marc L
Posté le 23-01-2013 à 19:49:49  profilanswer
 

 
              Je n'ai pas testé mais à la place de  Selection  (un peu idiot à l'ouverture d'un document),
              j'essaierais plutôt avec  ActiveDocument.Range  …
 

n°2172415
Marc L
Posté le 23-01-2013 à 19:55:14  profilanswer
 

 
              AutoExec  est plutôt obsolète !
 
              Cela fait 10 ans qu'il faut regarder du côté des évènements d'un document,
              du genre  Document_Open  dans le module  ThisDocument  …
 

n°2173776
cfmreggae
Posté le 01-02-2013 à 14:54:35  profilanswer
 

Désolé de ne répondre que maintenant, j'ai peu de temps à consacrer à ce point particulier donc je progresse en échelonnant mon temps.
 
En cherchant et en testant plsuieurs méthodes, ca fonctionne avec :
 

Code :
  1. Sub AutoOpen()
  2. '
  3. ' AutoOpen Macro
  4. '
  5. '
  6. With ActiveDocument.Content.Find
  7.     .Text = "**"
  8.     .Replacement.Text = "*   *"
  9.     .Execute Replace:=wdReplaceAll
  10. End With
  11. End Sub


 
En me placant la macro dans mon AutoOpen du document.
Ca marche très bien sur les données présentes dans le document, dès l'ouverture, je vois les données remplacées.
 
Par contre (niveau 2 de difficulté), il s'agit en fait de données fusionnées, j'aurai donc besoin de lancer automatiquement cette macro juste après la fusion. Y'a t'il un évènement qui puisse déterminer ce moment ?
 
En gros, c'est une edition fusionnée, Word s'ouvre en silencieux, fusionne, imprime et se ferme (mais ne s'ouvre jamais visuellement en conditions de prod).
 
Il ne me manque donc plus que l'étape "trouver l'évènement post-fusion".


Message édité par cfmreggae le 01-02-2013 à 14:57:21
n°2173784
Marc L
Posté le 01-02-2013 à 15:15:43  profilanswer
 

 
                Si la fusion se fait par VBA, il suffit juste d'ajouter le code en fin de celui concernant cette fusion,
                sinon je ne vois pas de solution …
 

n°2173792
cfmreggae
Posté le 01-02-2013 à 15:52:41  profilanswer
 

Je ne saurais dire, c'est un soft en hyperfile SQL qui pousse les données dans un TXT, ouvre l'état et fusionne.
 
J'ai vu certaines méthodes "AfterMerge" il faut surement que je creuse dans ce sens...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro Word 2010 / Autoexec replace

 

Sujets relatifs
macro copier collerAide pour Macro Excel
macro sur excelDemande d'aide URGENTE - PPT 2010
MacroComment exécuter ma macro Excel automatiquement ?
macro recherche cellules dans 2 fichiers[PHP] Aide pour un preg_replace, caractère de fin ]
Bouton imprimer permettant de faire un publipostage sur WordMise en page d'un signet sous Word par macro
Plus de sujets relatifs à : Macro Word 2010 / Autoexec replace


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR