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 !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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+
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.
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
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 !
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 !
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
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+
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 !
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
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
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
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 !
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 !
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
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
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
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