Vba Word 2013 - Sélection Text entre deux formats de police
Habtar
-
Modifié par Habtar le 9/01/2016 à 17:54
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 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).
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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)
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.