Voilà mon problème avec Microsoft Office Word 2003 SP2 sous XP
J'ai un document dont certaines phrases sont coupées par une marque de paragraphe. Ce qui donne pour exemple ceci:
Citation :
Quand une entreprise (organisme, ..) décide de "déposer un nom de domaine", elle s'adresse à un prestataire¶
habilité pour le faire (en France ou aux USA), qui va vérifier si le nom n'existe pas déjà, et ensuite va lui attribuer¶
une adresse IP disponible. Le couple domaine-adresse IP est¶
ensuite communiqué à des serveurs DNS, tous connectés à Internet, qui vont¶
dialoguer entre eux pour "répliquer" (si besoin est) cette mise à jour d'annuaire.¶
Et ceci sur une centaine de pages, donc la flemme de corriger cela manuellement. Cela me prendrait environ une centaine d'années et je n'ai pas tout ce temps à y consacrer
J'ai essayé tout ce dont je suis capable pour réassembler ces phrases dans tout le doc. J'ai fait une recherche selective pour surligner toutes les marques de paragrahes mises en cause en faisant ceci:
Ctrl F en mettant dans la case "rechercher" ^$^p^$, ajouté à cela quelques options selectives pour ne rechercher que dans le corps de texte, puis rechercher tout
Cela me surligne les marques de paragraphe concernées. Le problème maintenant, c'est que je voudrais remplacer les marques de paragraphes ^p ainsi surlignées par un espace. Or la fonction remplacer de word ne le fait pas car elle remplace soit toutes les marques de paragraphe du document, soit toutes la chaînes de caractères surlignées ^$^p^$.
D'où me vient l'idée de l'utilisation d'une macro qui pourrait éxecuter ce que je souhaite. Or, je ne connais rien au langage VBA ni s'il pourra résoudre mon problème.
Voici ma question: est-il possible de programmer en VBA, directement applicable dans une macro word, cette tâche:
remplacer dans tout le document ^p par un espace quand ^p est compris entre deux lettres minuscules appartenant au corps de texte ?
J'espère que j'ai bien exprimé mon problème et que vous m'avez compris.
Si un pro du VBA pouvait m'éditer cette macro si cela est possible ou bien m'orienter vers une autre solution que l'arrachage de cheveux pour résoudre ce problème. Ce serait fantastique et ça me changerait la vie car je pourrais appliquer cette macro à pleins de doc qui représente des milliers de pages.
A votre bon coeur, messieurs, dames
fred
Message édité par fred_gaou le 05-12-2005 à 16:14:30
Et si tu nous disais la provenance du texte mal retranscrit ? C'est du copier-coller depuis des pages Web ? Des fichiers .doc "d'origine" (quelle version de Word, dans ce cas) ? De l'importation de texte depuis un autre format de texte ? Il se peut, dans le cas d'une importation, que le mécanisme de Word patauge un peu, suivant le format d'origine.. Autant que possible, il est préférable de gérer en amont l'éventuelle arrivée de soucis, du côté de la source..
Après pour les macros, je passe la main..
Message édité par Johan_et_Pirlouit le 05-12-2005 à 05:47:32
Ce sont des textes que j'ai converti de leur format PDF d'origine au format Word.doc grâce au logiciel "Solid Converter PDF" et ce afin de pouvoir les remettre en forme. Je trouve que ça fait plutôt bien son boulot dans l'ensemble mais ya peut-être un logiciel meilleur qui permet de palier à ses petits inconvénients.
Ca rentre bien dans ce que je pensais.... Plusieurs soucis : les deux formats PDF et DOC sont des formats propriétaires et si le premier, sans être réellement ouvert, est maintenant pas mal utilisé par des applis autres qu'Adobe Acrobat / Distiller et avec un bon niveau de compatibilité, le second reste particulièrement fermé et les applis autres que MS qui savent générer du .doc le font par devinettes, car personne ne peut actuellement accéder au code source de la structure du format DOC..
Donc, ton soucis est le suivant : Solid Converter PDF qui fait de la "décompilation" PDF pour ensuite générer un fichier DOC dont il ne sait pas les subtilités de la structure..
Je viens de faire quelques assais avec la v3 Démo et, comme tous ces logiciels d'extraction, il ne faut pas trop lui en demander.. Pas grand chose à voir avec les documents de démonstration sur le cite de Solid Converter, documents qui, comme d'hab, servent plus d'artifices marketting qu'autre chose..
Avant de lancer des macros, essaie de sortir en format RTF, standard connu, reconnu et simple à manipuler par les logiciels de création.. Sinon, pour les autres logiciels, vois plutôt dans la cat Logiciels (par ex. le Topic Unique sur les logiciels gratuits, entre autres).. Je serais très mauvais guide pour ça ..
Message édité par Johan_et_Pirlouit le 05-12-2005 à 17:07:21
Une idée : y a-t-il systématiquement un espace devant le retour-chariot ? Si oui, la solution saute au yeux...
Un truc pour VBA : Enregistre une macro et essaye de comprendre le code (Alt+F11). Ce n'est pas difficile, tu peux trouver de l'aide directement dans l'aide en ligne, sur google et pourquoi pas ici. Mais ça prend plein de temps !
Je vais tester ton code que je vais essayer de comprendre afin de me mettre la prog de VBA.
Sur un autre forum, un gars sympa comme vous m'a donné un code qui marche à la perfection. Le voici:
Code :
Function EstMin(c As String) As Boolean
EstMin = (c >= "a" And c <= "z" )
End Function
Sub SupprimeParagraphe()
Selection.Find.ClearFormatting
ActiveDocument.Select
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^$^p^$"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Selection.Find.Execute
If EstMin(Left(Selection.Text, 1)) And EstMin(Right(Selection.Text, 1)) Then
Mon problème est donc résolu grâce à la générosité des programmeurs ou developpeurs amateurs qui ont bien voulu offrir au néophyte un peu de leur science. Avec toute ma reconnaissance.
Message édité par fred_gaou le 05-12-2005 à 22:48:28