Se connecter avec
S'enregistrer | Connectez-vous

coupure de phrase dans Ms Word,soluce en VBA?

Dernière réponse : dans Programmation

Bonjour à tous et merci de votre attention.

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 :D 

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 :jap: 

fred

Autres pages sur : coupure phrase word soluce vba

Lassé par la pub ? Créez un compte

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..

:jap: 

Salut,

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 ;) ..

:jap: 
Expert Programmation

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 !
Expert Programmation

Essaie ça :
  1. Option Explicit ' Evite les fautes de frappe
  2.  
  3. Sub Macro1()
  4. Dim i As Integer
  5.  
  6. Selection.GoTo wdGoToPage, wdGoToFirst ' Allez au début.
  7. Do While True
  8. With Selection ' On considère le caractère courant
  9. If .Style <> "Normal" Then ' Si on n'est pas en style "Normal", on zérote.
  10. ' Tu dois peut être faire des changements ici.
  11. i = 0
  12. Else
  13. If i = 2 Then ' Est-on une case après le retour-chariot ?
  14. .MoveLeft wdCharacter, 1 ' On recule d'une case, donc on est sur le retour-chariot
  15. .Characters(1) = "" ' On met RIEN à la place du retour-chariot
  16. .MoveRight wdCharacter, 1 ' On avance d'une case.
  17. i = 0 ' C'est fait, on zérote.
  18. End If
  19. If .Characters(1) = Chr(13) And i = 1 Then ' Est-on sur le retour-chariot
  20. i = 2
  21. Else
  22. ' Attention, tu veux peut-être considérer l'espace, la ponctuation, etc.
  23. ' Ici je te donne la version "Une minuscule avant
  24. If .Characters(1) >= "a" And .Characters(1) <= "z" Then i = 1 Else i = 0
  25. End If
  26. End If
  27. If .MoveRight(wdCharacter, 1) = 0 Then Exit Do ' FIN
  28. End With
  29. Loop
  30. End Sub

Merci zeb et tous les autres qui m'ont répondu :jap: 

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:

  1. Function EstMin(c As String) As Boolean
  2. EstMin = (c >= "a" And c <= "z")
  3. End Function
  4. Sub SupprimeParagraphe()
  5. Selection.Find.ClearFormatting
  6. ActiveDocument.Select
  7. Selection.Find.ClearFormatting
  8. With Selection.Find
  9. .Text = "^$^p^$"
  10. .Replacement.Text = ""
  11. .Forward = True
  12. .Wrap = wdFindContinue
  13. .Format = False
  14. .MatchCase = False
  15. .MatchWholeWord = False
  16. .MatchWildcards = False
  17. .MatchSoundsLike = False
  18. .MatchAllWordForms = False
  19. End With
  20. While Selection.Find.Execute
  21. If EstMin(Left(Selection.Text, 1)) And EstMin(Right(Selection.Text, 1)) Then
  22. Selection.TypeText Left(Selection.Text, 1) & " " & Right(Selection.Text, 1)
  23. End If
  24. Wend
  25. End Sub


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. :hello: 
Lassé par la pub ? Créez un compte