Vba Word 2013 - Sélection Text entre deux formats de police

Habtar - Modifié par Habtar le 9/01/2016 à 17:54
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 9 janv. 2016 à 19:16
Bonjour,

J'ai un document qui comporte plusieurs paragraphes, mais il a été mal construit et il n'y a pas de style affecté aux titres de chacune des parties. La seule chose qui distingue une partie du reste du texte et qu'elle commence toujours avec une police "Arial", 14 pts, rouge et en majuscule.

Faire le travail à la main serait long et fastidieux car le document est bien rempli...

Je pensais donc à une macro qui mettrait un peu d'ordre dans tous cela, j'ai déjà résolu certains problèmes, mais je bute sur un point : sélectionner, de manière itérative, le texte qui se situe entre deux parties (identifiables uniquement par la police ET la taille ET la couleur ET la casse).

Quelqu'un aurait une idée ?

Merci d'avance,

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 janv. 2016 à 18:42
Bonjour,
Je n'en sais personnellement encore rien, car je n'utilise jamais VBA/Word (J'en sais donc encore moins que toi, qui es au moins débutant). Je vais donc ouvrir l'aide VBA et lire (ce que tu devrais également faire).
Je ne sais pas ce que je vais y trouver, mais je vais lire ...
Je suis d'avance persuadé de ce que je serai assez rapidement en mesure de te trouver une solution, même bâclée !
Pourquoi vais-je le faire ? Très simple : juste pour te prouver (et à d'autres également, dans la foulée) que cette aide VBA EST A LIRE et qu'elle suffit généralement.
A plus (je reviens après mon casse-croute)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 10/01/2016 à 11:57
Regarde à quoi j'arrive après 6 tranches de sauciflard et deux verres de vin rouge (du gros qui tache, hélas).
Dim toto As Paragraph
For Each toto In ActiveDocument.Paragraphs ' je boucle sur la collection des paragraphes
toto.Range.Select ' je sélectionne chacun de ces paragraphes, tour à tour
Selection.MoveLeft Unit:=wdWord, Count:=1 ' je vais au tout début du paragraphe
MsgBox "la 1ère lettre de ce paragraphe est " & Selection.Text & vbCrLf & _
" en police " & Selection.Font.Name & vbCrLf & _
"de taille " & Selection.Font.Size & vbCrLf & _
"de couleur " & Selection.Font.ColorIndex
Next

Comment ai-je cherché dans l'aide VBA ? J'ai commencé par le mot "paragraph" et la collection "paragraphs".
Le reste est venu tout seul, grâce à l'intellisense sur le mot selection (dans l'éditeur) et au mot Font (dans l'éditeur également).
Tu as là maintenant tout ce qu'il te faut pour aller partout où tu veux aller, comme tu l'entends (et je VEUX te faire confiance pour y parvenir). Il te suffit maintenant d'un tout petit "grain de sel".
Explication :
1) j'ai bâclé (suis certain de ce que j'aurais pu faire mieux)
2) j'ai laissé aller mes réflexes habituels (ils ne sont pas forcément les meilleurs, mais ...) et ma manière "idiote" de raisonner.
Voilà, ami. Ne prends pas ce message pour ce qu'il n'est pas. Il cherche non à "t'abaisser", mais au contraire à "t'ouvrir" à un certain esprit.

EDIT : change le Moveleft par :
Selection.MoveLeft Unit:=wdCharacter, Count:=1 ' je vais au tout début du paragraphe

(plus précis)
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Rejoignez-nous