macro

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #1577708

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+

Barsalou
Le #1577707
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 !
Geo
Le #1577698

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+

Barsalou
Le #1577696
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
DesseJ
Le #1577695
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
Barsalou
Le #1577685
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 !
Anacoluthe
Le #1577678
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

Publicité
Poster une réponse
Anonyme