Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VB "styler" les paragraphes contenant un mot donné

5 réponses
Avatar
Le Nordiste
Bonjour


J'ai un document contenant 200 paragraphes environ.
Certain paragraphes contiennent la chaine "-version : "

Je veux que ces paragraphes passent en "style 2", pour le sommaire,
avec la partie de texte commen=E7ant par -version=85 juque la fin de
paragraphe, reste en taille normale.

Une boucle en VB ferait l'affaire, mais que mettre dedans ?

'""""""""""""""""
Dim Para As Paragraph, a
Mot_cherch=E9 =3D "-version du : "

ActiveDocument.Bookmarks("\StartOfDoc").Select

For Each Para In ActiveDocument.Paragraphs
Para.Range.Select

' ICI bientot votre oeuvre !

Next Para

'""""""""""""""""
Merci pour votre collaboration

5 réponses

Avatar
Geo
Bonjour

J'ai un document contenant 200 paragraphes environ.
Certain paragraphes contiennent la chaine "-version : "

Je veux que ces paragraphes passent en "style 2", pour le sommaire,
avec la partie de texte commençant par -version… juque la fin de
paragraphe, reste en taille normale.



Pas compris.
Vous voulez ne changer le style que dans la table des matières et pour
les lignes contenant "-version" ?

Une boucle en VB ferait l'affaire, mais que mettre dedans ?



Un rechercher remplacer devrait faire l'affaire ? non ? ;o)

Sinon :

ActiveDocument.Bookmarks("StartOfDoc").Select


est inutile

For Each Para In ActiveDocument.Paragraphs


Au lieu de active document, il faut sans doute se limiter à la table
des matières

Para.Range.Select


Probablement inutile aussi.

Mauvaise journée, ciel gris de la pluie depuis hier, ça agit sur le
moral !

--
A+
Avatar
Le Nordiste
> > Je veux que ces paragraphes passent en "style 2", pour le sommaire,



Mes paragraphes contenant "- version du : " sont les titres précédents
des paragraphes "normaux".
C'est pour cela que je parle de "pour le sommaire" mais c'est ambigu
comme tournure, je le concéde.$


Mon texte se présente sous la forme

Nom_de_requete_1 -version du : 01/01/2008-
Ma requete_1

Nom_de_requete_2 -version du : 01/01/2008-
Ma requete_2
………
Avatar
Geo
Bonjour à Le Nordiste qui nous a écrit :

Je veux que ces paragraphes passent en "style 2", pour le sommaire,





Mes paragraphes contenant "- version du : " sont les titres précédents
des paragraphes "normaux".



Ca doit faire qqch comme ceci (pas testé) :
Sub StyleNormal()
Dim Para As Paragraph, a
mot_cherché = "-version du : "
For Each Para In ActiveDocument.Paragraphs
If InStr(1, Para.Range.Text, mot_cherché, vbTextCompare) > 0 Then
Para.Range.Style = "Normal"
End If
Next Para
End Sub

--
A+
Avatar
Le Nordiste
merci Géo. C'est tout à fait ça.

Mais si j'osais, je demanderais encore :

Est il possible d'avoir sur une seule ligne deux styles ?
(ou quelque chose qui y ressemble)
exemple :
Nom_de_requete_1 -version du : 01/01/2008-
|______style 2_____| |________normal______|

Sachant que la seule partie constante est
"-version du : " et le tiret en fin de ligne.


Merci de ta collaboration désinterressée
ET éminement intéressante.
Avatar
Geo
Bonjour

merci Géo. C'est tout à fait ça.

Mais si j'osais, je demanderais encore :

Est il possible d'avoir sur une seule ligne deux styles ?
(ou quelque chose qui y ressemble)
exemple :
Nom_de_requete_1 -version du : 01/01/2008-
______style 2_____| |________normal______|





Un peu plus compliqué en effet, il y a (au moins) deux pistes, soient
mettre un style comme indiqué sur l'exemple, soit faire une mise en
forme "manuelle".
Je prêche en général pour l'utilisation de styles, surtout si ce
style_2 doit évoluer, mais avec deux styles différents sur la même
ligne en vba, il faudrait que je creuse une peu, donc je vais quand
même aller au plus court, c'est à dire la mise en forme manuelle.

Sub StyleNormal()
Dim Para As Paragraph
Dim Requete As Range
Dim Mot_cherché As String
Dim pos As Integer
Mot_cherché = "-version du : "
For Each Para In ActiveDocument.Paragraphs
pos = InStr(1, Para.Range.Text, Mot_cherché, vbTextCompare)
If pos > 0 Then
Para.Range.Style = "Normal"
Set Requete = ActiveDocument.Range( _
Start:=Para.Range.Start, _
End:=Para.Range.Start + pos - 1)
' mise en forme manuelle
Requete.Font.Size = 12
End If
Next Para
End Sub

Merci de ta collaboration désinterressée
ET éminement intéressante.



Merci pour les encouragements.

--
A+