Rechercher/Remplacer TROP LOURD en VBA WORD - Avis aux pros ! - VB/VBA/VBS - Programmation
Marsh Posté le 28-08-2006 à 18:26:23
Voir peut etre http://forum.hardware.fr/hardwaref [...] m#t1422772
http://forum.hardware.fr/hardwaref [...] 1832-1.htm
Marsh Posté le 01-09-2006 à 13:43:15
Bonjour,
Voici pour le style itaic en une seule macro
With Selection.Find
.ClearFormatting
.Text = ""
.MatchWildcards = False
.Forward = True
.Font.Italic = 1
.Replacement.ClearFormatting
.Replacement.Text = "^&"
.Replacement.Style = ActiveDocument.Styles("Style1" )
.Execute Replace:=wdReplaceAll
End With
pour le noir
Il faut mettre au début de ton fichier <COULEUR>
et a la fin </COULEUR>.
Attention ces 2 balises doivent être non noire
Ensuite tu fais comme pour l'italique
recherche du noir
remplacer par </COULEUR>texte noir<COULEUR>
et après tu recherches
\<COULEUR\>@\</COULEUR\> ( avec critères spéciaux)
Marsh Posté le 04-09-2006 à 17:15:31
MILLE MERCIS !!!!!!!!!!!!!
Cette macro est tout simplement géniale et répond parfaitement à mon besoin !!!
Je peux enfin travailler sur ces gros fichiers sans voir Word tomber à bout de souffle...
Sur MAC comme sur PC d'ailleurs !
Pyrof, je suis ton débiteur ;-)
Peux-tu me commenter la toute dernière ligne de ton code concernant la couleur ?
Je t'avoue n'avoir pas tout compris...
Ca j'ai compris... C'est d'ailleurs malin d'avoir tourné le problème à l'envers ;-)
Baliser le noir, je t'avoue que je n'y aurais pas pensé... Pourtant c'est bête comme choux...
Citation : |
Ca aussi j'ai compris... Dès que l'on rencontre du noir, on positionne une balise de fermeture avant et une balise d'ouverture après...
Encore une fois c'est super malin ! (on t'as déjà dit que tu étais un grand malade ...? )
Citation : |
Mais c'est là que ça se corse pour moi. Même en connaissant un peu l'usage des caractères génériques, j'ai un peu de mal à comprendre ...
Citation : |
Quoi qu'il en soit, Encore mille mercis !!!
Je brandirais partout ton nom en étendard, en narrant à qui voudra l'entendre l'histoire fantastique de pyrof venu à mon secours... ;-)
Bon, allez, j'arrête là mes remerciements, mais vraiment je planche la-dessus depuis un moment et tu m'as sorti une sacré épine du pied !
J'espère avoir la chance de te lire à nouveau !
Marsh Posté le 05-09-2006 à 16:26:47
Bonjour
Avec du retard ...
Les caractères generiques sont très uitiles
@ = n'importe quel caractère un ou plusieurs
mais si tu veux rechercher le caractère @ il faut le précéder de \ donc \@
@ recherchera nimporte quel caractère
\@ recherchera le caracère @
Il en va ainsi pour @ , <,>
< :recherche en début de mot
\< recherche du caractère <
> recherche en fin de mot
\> recherche du caratère >
Voilà, mais il en existe beaucoup Regarde l'aide de word elle est bien faite
Bon courrage
Marsh Posté le 06-09-2006 à 10:22:35
Super, merci encore pour cette explication très claire.
Je connais les caractères génériques, pas complètement cependant comme tu l'avais deviné.
J'avais lu le rôle de l'anti slash quelque part mais je l'avais oublié ;-)
Reste plus qu'à tester et mettre en oeuvre tout ça pour la partie 'couleur'...
Pour la première macro c'est vraiment nickel. Au bout d'un certain nombre de "chercher/remplacer" consécutifs, Word perd quand même les pédales mais il suffit de scinder les gros documents en deux pour régler le problème (1)...
Grâce à ton bout de code, je n'utilise désormais plus qu'une macro au lieu de trois auparavant ce qui est déjà excellent.
Encore une fois, mille merci à toi pour ton aide précieuse !!!
(1) Je me demande bien si il y a un moyen de palier à cette 'difficulté'... Sur Mac, la macro indique qu'un trop grand nombre de remplacements sont en cours dans le document, stoppe et lance carrément le débogueur.
Sur PC, Word prévient simplement que la 'mémoire' est insuffisante pour pouvoir effectuer une éventuelle annulation mais autorise toutefois la marco à achever son travail...
Compte tenu de la mémoire dont je dispose sur mes deux machines (5Go pour le mac et 1 Go sur le PC) je me doute bien que ce n'est pas de la mémoire physique dont il est question mais d'une sorte de zone tampon, d'une zone mémoire qui appartiendrait à Word et qui serait en quelque sorte limitée...
Peut-être existe t-il une manière d'augmenter ou de 'vidanger' cette zone tampon ? (une sauvegarde entre chaque macro ne change rien, j'ai essayé...)
Marsh Posté le 28-08-2006 à 16:14:14
Bonjour à tous.
Je vous présente ici un problème que je ne parviens pas à résoudre vu mon niveau de débutant en VBA. J'ai préparé une macro qui effectue un balisage via des opérations de chercher/remplacer en nombre très important dans des documents Word pouvant atteindre plusieurs centaines de pages... Sur PC, la macro fonctionne presque correctement, un message préviens que les ressources mémoires étant insuffisantes, aucune annulation ne pourra être effectuée, mais la macro continue son travail... Sur Mac, une erreur se produit et l'exécution de ma macro est interrompue... (je ne pense pas que la RAM soit en cause >> PC 1,66Ghz, 1Go Ram - MAC 2x2,66 Ghz avec 5Go de ram). Sans même parler du fonctionnement de VBA qui est très différent entre la version PC (WORD 2003) et mac (Word 2004), je pense que mes macros sont très lourdes et pourraient être optimisées...
Cela fait une semaine que j'arpente les fichiers d'aide, les forums, je n'ai pour le moment pas de solution...
Voici le code de mes Macros :
En premier, je balise le texte en italique...
Ensuite, j'applique un style sur le texte balisé en me servant de ces balises pour repérer le texte à baliser...
Enfin, je supprime les balises...
Vous voyez ce que je veux dire ?
Je cherche également un moyen de rechercher le texte "NON NOIR" au sein de mon document de manière à sélectionner tout le texte de couleur (peu importe la couleur) SAUF le NOIR pour lui appliquer un traitement.
Une dernière chose, je cherche un moyen fiable pour supprimer les styles non utilisés dans mon document. J'ai trouvé cette macro, mais elle fonctionne de façon sporadique, un coup ça marche, un coup non... "oStyle" génère parfois des erreurs, sur PC comme sur Mac...
GRAND MERCI à tous ceux et celles qui auront la gentillesse de me répondre...