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

macro

7 réponses
Avatar
Barsalou
Bonjour les experts !

Je cherche en vain à créer une macro qui fasse ce qui suit :

Trouver toutes les occurrences d'un caractère, disons A
Les remplacer par le caractère B, mais de sorte que le caractère B ait une
taille supérieure à celle du A remplacé, et ceci dans une proportion donnée,
par exemple en multipliant la taille par 1,5
Évidemment les différents A à remplacer n'ont pas tous la même taille !

Merci de me donner un bout de code

7 réponses

Avatar
Geo

Bonjour les experts !

Je cherche en vain à créer une macro qui fasse ce qui suit :

Trouver toutes les occurrences d'un caractère, disons A
Les remplacer par le caractère B, mais de sorte que le caractère B ait une taille
supérieure à celle du A remplacé, et ceci dans une proportion donnée, par exemple en
multipliant la taille par 1,5
Évidemment les différents A à remplacer n'ont pas tous la même taille !

Merci de me donner un bout de code


L'enregistreur de macro est votre ami.
Faites l'opération en remplaçant les A d'une taille par un B d'une
autre taille. Amha vous aurez 80 % du code.
Vous supprimez dans la recherche la condition sur la taille, mais vous
la récupérez et vous appliquez votre formule magique pour les B de
remplacement.
Que dis-je ? 90 % du code.

--
A+

Avatar
Barsalou
Merci de l'idée, mais je n'y arrive toujours pas car, dans la macro
enregistrée (et qui marche), je ne vois rien qui corresponde à la taille des
caractères. J'avais essayé précédemment selection.font.size mais cela me
retourne la valeur de la taille de police au point d'insertion et non celle
du caractère à remplacer; quant à selection.find.font.size cela donne une
valeur aberrante (99999).
Encore un effort messieurs les spécialistes !
Avatar
Geo

Merci de l'idée, mais je n'y arrive toujours pas car, dans la macro enregistrée (et qui
marche), je ne vois rien qui corresponde à la taille des caractères. J'avais essayé
précédemment selection.font.size mais cela me retourne la valeur de la taille de police
au point d'insertion et non celle du caractère à remplacer; quant à
selection.find.font.size cela donne une valeur aberrante (99999).
Encore un effort messieurs les spécialistes !


Vous pouvez nous mettre le code obtenu ?

--
A+

Avatar
Barsalou
Voici la macro obtenue, qui change A, si en taille 12, en B de taille 14

Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "A"
.Replacement.Text = "B"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Je ne vois nulle part les nombres 12 et 14

Merci de vous intéresser à la question
Avatar
DesseJ
Bonjour,

Peut-être comme ceci, pour remplacer un A en 12 par un B en 14

Cordialement,
Stéph. D.

Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "A"
.Font.Size = 12
.Replacement.Text = "B"
.Replacement.Font.Size = 14
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Avatar
Barsalou
Effectivement cette macro transforme A de 12 points en B de 14 points, mais
mon problème est plus compliqué puisque je veux transformer tous les A,
quelle que soit leur taille, en B d'une taille à chaque fois 50% plus
grande, par exemple si A est de taille 12, B sera de taille 18, si A est de
taille 14, B sera de taille 21 etc..
Il faudrait donc que dans la macro je retrouve la taille des A trouvés
successivement, que je la multiplie à chaque fois par 1,5, et que j'affecte
cette valeur à la taille du B qui remplace le A.
Il existe sans doute une manière brutale consistant à répéter la routine
pour toutes les valeurs possibles de la taille de A, et donc de B. Mais
c'est vraiment lourd, d'autant que la manip doit se faire également pour
d'autres caractères.
Merci de me donner des idées !
Avatar
Anacoluthe
Bonjour !

'Barsalou' nous a écrit ...
Il faudrait donc que dans la macro je retrouve la taille des A trouvés
successivement, que je la multiplie à chaque fois par 1,5, et que
j'affecte cette valeur à la taille du B qui remplace le A.
Merci de me donner des idées !


Vous devez /boucler/ la recherche une à une pour appliquer à chaque
élément trouvé le traitement que vous souhaitez. Voici un exemple
de boucle qui va multiplier par 1,5 la taille de tous les A ou a.
Complétez si vous le souhaitez par un remplacement des A ou a par
des B ou b ......

Public Sub Grossir_A()
ActiveDocument.Content.Select
With Selection.Find
.ClearFormatting
.Text = "A"
.MatchCase = False
Do While .Execute = True
Selection.Font.Size = Selection.Font.Size * 1.5
Loop
End With
End Sub

Anacoluthe
« Celui qui trouve sans chercher
est celui qui a longtemps cherché sans trouver. »
- Gaston BACHELARD