Bonjour à tous,
je rencontre un problème en VBA lorsque je veux sélectionner (voire
remplacer) du texte dans la sélection en cours. Si la sélection ne
contient qu'un caractère, la recherche continue dans la suite du
document même avec l'option Wrap. Exemple ci dessous :
je veux transformer toutes les lettres de la selection en italique.
Si la selection contient au moins 2 caractère, ça fonctionne, sinon,
s'il y a d'autres caractères après la sélection, leurs lettres sont
également transformées en italique ! J'utilise word XP et j'ai constaté
le même problème avec word97.
Avez-vous une idée ? Merci.
With selection.Find
.Text = "^$"
.Replacement.ClearFormatting
.Replacement.Text = ""
.Replacement.Font.Italic = True
.Format = True
.Wrap = wdFindStop
.Execute Replace:=wdReplaceAll, Forward:=True
End With
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
AB
Bonjour, Je ne comprends pas bien où est le problème. Cette macro met en italique le texte sélectionné, et rien d'autre... Je ne vois pas ce que tu veux dire avec les 2 caractères. AB
Christophe wrote: || Bonjour à tous, || je rencontre un problème en VBA lorsque je veux sélectionner (voire || remplacer) du texte dans la sélection en cours. Si la sélection ne || contient qu'un caractère, la recherche continue dans la suite du || document même avec l'option Wrap. Exemple ci dessous : || je veux transformer toutes les lettres de la selection en italique. || Si la selection contient au moins 2 caractère, ça fonctionne, sinon, || s'il y a d'autres caractères après la sélection, leurs lettres sont || également transformées en italique ! J'utilise word XP et j'ai || constaté le même problème avec word97. || Avez-vous une idée ? Merci. || || With selection.Find || .Text = "^$" || .Replacement.ClearFormatting || .Replacement.Text = "" || .Replacement.Font.Italic = True || .Format = True || .Wrap = wdFindStop || .Execute Replace:=wdReplaceAll, Forward:=True || End With
Bonjour,
Je ne comprends pas bien où est le problème.
Cette macro met en italique le texte sélectionné, et rien d'autre...
Je ne vois pas ce que tu veux dire avec les 2 caractères.
AB
Christophe wrote:
|| Bonjour à tous,
|| je rencontre un problème en VBA lorsque je veux sélectionner (voire
|| remplacer) du texte dans la sélection en cours. Si la sélection ne
|| contient qu'un caractère, la recherche continue dans la suite du
|| document même avec l'option Wrap. Exemple ci dessous :
|| je veux transformer toutes les lettres de la selection en italique.
|| Si la selection contient au moins 2 caractère, ça fonctionne, sinon,
|| s'il y a d'autres caractères après la sélection, leurs lettres sont
|| également transformées en italique ! J'utilise word XP et j'ai
|| constaté le même problème avec word97.
|| Avez-vous une idée ? Merci.
||
|| With selection.Find
|| .Text = "^$"
|| .Replacement.ClearFormatting
|| .Replacement.Text = ""
|| .Replacement.Font.Italic = True
|| .Format = True
|| .Wrap = wdFindStop
|| .Execute Replace:=wdReplaceAll, Forward:=True
|| End With
Bonjour, Je ne comprends pas bien où est le problème. Cette macro met en italique le texte sélectionné, et rien d'autre... Je ne vois pas ce que tu veux dire avec les 2 caractères. AB
Christophe wrote: || Bonjour à tous, || je rencontre un problème en VBA lorsque je veux sélectionner (voire || remplacer) du texte dans la sélection en cours. Si la sélection ne || contient qu'un caractère, la recherche continue dans la suite du || document même avec l'option Wrap. Exemple ci dessous : || je veux transformer toutes les lettres de la selection en italique. || Si la selection contient au moins 2 caractère, ça fonctionne, sinon, || s'il y a d'autres caractères après la sélection, leurs lettres sont || également transformées en italique ! J'utilise word XP et j'ai || constaté le même problème avec word97. || Avez-vous une idée ? Merci. || || With selection.Find || .Text = "^$" || .Replacement.ClearFormatting || .Replacement.Text = "" || .Replacement.Font.Italic = True || .Format = True || .Wrap = wdFindStop || .Execute Replace:=wdReplaceAll, Forward:=True || End With
Christophe
Bonjour, Je ne comprends pas bien où est le problème. Cette macro met en italique le texte sélectionné, et rien d'autre... Je ne vois pas ce que tu veux dire avec les 2 caractères. bonjour,
je suis ennuyé lorsque ma selection ne contient qu'un caractère car dans ce cas, l'instruction find ne se limite pas à la sélection pour effectuer sa recherche/remplacer mais va aussi explorer le reste du document alors que je veux limiter cette instruction à la seule sélection en cours. Est-ce un bug ? Cela fonctionne très bien dès lors qu'il y a au moins 2 caractères dans la sélection. Comme tu le dis, cette macro se contente alors de metttre en italique les lettres de la sélection.
Bonjour,
Je ne comprends pas bien où est le problème.
Cette macro met en italique le texte sélectionné, et rien d'autre...
Je ne vois pas ce que tu veux dire avec les 2 caractères.
bonjour,
je suis ennuyé lorsque ma selection ne contient qu'un caractère car dans
ce cas, l'instruction find ne se limite pas à la sélection pour
effectuer sa recherche/remplacer mais va aussi explorer le reste du
document alors que je veux limiter cette instruction à la seule
sélection en cours.
Est-ce un bug ? Cela fonctionne très bien dès lors qu'il y a au moins 2
caractères dans la sélection. Comme tu le dis, cette macro se contente
alors de metttre en italique les lettres de la sélection.
Bonjour, Je ne comprends pas bien où est le problème. Cette macro met en italique le texte sélectionné, et rien d'autre... Je ne vois pas ce que tu veux dire avec les 2 caractères. bonjour,
je suis ennuyé lorsque ma selection ne contient qu'un caractère car dans ce cas, l'instruction find ne se limite pas à la sélection pour effectuer sa recherche/remplacer mais va aussi explorer le reste du document alors que je veux limiter cette instruction à la seule sélection en cours. Est-ce un bug ? Cela fonctionne très bien dès lors qu'il y a au moins 2 caractères dans la sélection. Comme tu le dis, cette macro se contente alors de metttre en italique les lettres de la sélection.
AB
OK, compris, testé, et effectivement, tu as raison. Je ne sais pas expliquer, mais je crois savoir comment contourner le problème. Essaie ça : Sub Italique() If Selection.Characters.Count = 1 Then Exit Sub With Selection.Find .Text = "^$" .Replacement.ClearFormatting .Replacement.Text = "" .Replacement.Font.Italic = True .Format = True .Wrap = wdFindStop .Execute Replace:=wdReplaceAll, Forward:=True End With End Sub
AB
Christophe wrote: || ||| Bonjour, ||| Je ne comprends pas bien où est le problème. ||| Cette macro met en italique le texte sélectionné, et rien d'autre... ||| Je ne vois pas ce que tu veux dire avec les 2 caractères. || bonjour, || je suis ennuyé lorsque ma selection ne contient qu'un caractère car || dans ce cas, l'instruction find ne se limite pas à la sélection pour || effectuer sa recherche/remplacer mais va aussi explorer le reste du || document alors que je veux limiter cette instruction à la seule || sélection en cours. || Est-ce un bug ? Cela fonctionne très bien dès lors qu'il y a au || moins 2 caractères dans la sélection. Comme tu le dis, cette macro || se contente alors de metttre en italique les lettres de la sélection.
OK, compris, testé, et effectivement, tu as raison.
Je ne sais pas expliquer, mais je crois savoir comment contourner le
problème.
Essaie ça :
Sub Italique()
If Selection.Characters.Count = 1 Then Exit Sub
With Selection.Find
.Text = "^$"
.Replacement.ClearFormatting
.Replacement.Text = ""
.Replacement.Font.Italic = True
.Format = True
.Wrap = wdFindStop
.Execute Replace:=wdReplaceAll, Forward:=True
End With
End Sub
AB
Christophe wrote:
||
||| Bonjour,
||| Je ne comprends pas bien où est le problème.
||| Cette macro met en italique le texte sélectionné, et rien d'autre...
||| Je ne vois pas ce que tu veux dire avec les 2 caractères.
|| bonjour,
|| je suis ennuyé lorsque ma selection ne contient qu'un caractère car
|| dans ce cas, l'instruction find ne se limite pas à la sélection pour
|| effectuer sa recherche/remplacer mais va aussi explorer le reste du
|| document alors que je veux limiter cette instruction à la seule
|| sélection en cours.
|| Est-ce un bug ? Cela fonctionne très bien dès lors qu'il y a au
|| moins 2 caractères dans la sélection. Comme tu le dis, cette macro
|| se contente alors de metttre en italique les lettres de la sélection.
OK, compris, testé, et effectivement, tu as raison. Je ne sais pas expliquer, mais je crois savoir comment contourner le problème. Essaie ça : Sub Italique() If Selection.Characters.Count = 1 Then Exit Sub With Selection.Find .Text = "^$" .Replacement.ClearFormatting .Replacement.Text = "" .Replacement.Font.Italic = True .Format = True .Wrap = wdFindStop .Execute Replace:=wdReplaceAll, Forward:=True End With End Sub
AB
Christophe wrote: || ||| Bonjour, ||| Je ne comprends pas bien où est le problème. ||| Cette macro met en italique le texte sélectionné, et rien d'autre... ||| Je ne vois pas ce que tu veux dire avec les 2 caractères. || bonjour, || je suis ennuyé lorsque ma selection ne contient qu'un caractère car || dans ce cas, l'instruction find ne se limite pas à la sélection pour || effectuer sa recherche/remplacer mais va aussi explorer le reste du || document alors que je veux limiter cette instruction à la seule || sélection en cours. || Est-ce un bug ? Cela fonctionne très bien dès lors qu'il y a au || moins 2 caractères dans la sélection. Comme tu le dis, cette macro || se contente alors de metttre en italique les lettres de la sélection.
Christophe
OK, compris, testé, et effectivement, tu as raison. Je ne sais pas expliquer, mais je crois savoir comment contourner le problème. Essaie ça : Sub Italique() If Selection.Characters.Count = 1 Then Exit Sub With Selection.Find .Text = "^$" .Replacement.ClearFormatting .Replacement.Text = "" .Replacement.Font.Italic = True .Format = True .Wrap = wdFindStop .Execute Replace:=wdReplaceAll, Forward:=True End With End Sub oui, ça fonctionne. En fait c'est la seule alternative que j'avais
trouvé pour contourner ce "bug" si c'en est un. Etrange... D'autant que différentes version de word ont ce comportement. Merci AB en tout cas, à bientôt
OK, compris, testé, et effectivement, tu as raison.
Je ne sais pas expliquer, mais je crois savoir comment contourner le
problème.
Essaie ça :
Sub Italique()
If Selection.Characters.Count = 1 Then Exit Sub
With Selection.Find
.Text = "^$"
.Replacement.ClearFormatting
.Replacement.Text = ""
.Replacement.Font.Italic = True
.Format = True
.Wrap = wdFindStop
.Execute Replace:=wdReplaceAll, Forward:=True
End With
End Sub
oui, ça fonctionne. En fait c'est la seule alternative que j'avais
trouvé pour contourner ce "bug" si c'en est un. Etrange... D'autant que
différentes version de word ont ce comportement.
Merci AB en tout cas,
à bientôt
OK, compris, testé, et effectivement, tu as raison. Je ne sais pas expliquer, mais je crois savoir comment contourner le problème. Essaie ça : Sub Italique() If Selection.Characters.Count = 1 Then Exit Sub With Selection.Find .Text = "^$" .Replacement.ClearFormatting .Replacement.Text = "" .Replacement.Font.Italic = True .Format = True .Wrap = wdFindStop .Execute Replace:=wdReplaceAll, Forward:=True End With End Sub oui, ça fonctionne. En fait c'est la seule alternative que j'avais
trouvé pour contourner ce "bug" si c'en est un. Etrange... D'autant que différentes version de word ont ce comportement. Merci AB en tout cas, à bientôt