OVH Cloud OVH Cloud

macro non superfétatoire

7 réponses
Avatar
AB
Bonsoir à tous,
Je vais aller au dodo, car j'en ai ras le bol de buter sur un truc bête :
La macro non superfétatoire ci-après cherche toute expression de type $#$###
(il s'agit de références de cellules excel, mais je vous rassure, nous sommes
dans Word), et supprime les $.
Par exemple, $A$123 devient A123.
Mais je voudrais que la macro me mette en plus le nouveau mot (A123) en rouge.
Je ne vois pas comment, dans le code suivant, paramétrer les attributs du
texte de remplacement.
Un adepte des MNS pourrait-il me proposer une solution ?
Voici la macro :
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 07/11/2004 par AB
Selection.WholeStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = "($)(?)($)(????)"
.Replacement.Text = "\2\4"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

A votre bon coeur...
André

7 réponses

Avatar
Clément Marcotte
Bonjour André,

J'ai bricolé cela avant d'aller au dodo. Testé avec 2 adresses
ajoutées au travers d'un autre texte:

(En passant, elle ne fonctionne pas pas avec des adresses à 2 lettres,
genre $AA$345, ni avec des adresses en minuscules. (mais comme tu
récupères l'adresse d'Excel par automation, elle devrait être toujours
en majuscules.))

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 07/11/2004 par AB
' Et légèrement modifiée et élaguée par CM
Selection.WholeStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = "($)(?)($)(????)"
.Replacement.Text = "24"
.Replacement.Font.Color = wdColorRed
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub


"AB" a écrit dans le message de
news:
Bonsoir à tous,
Je vais aller au dodo, car j'en ai ras le bol de buter sur un truc
bête :

La macro non superfétatoire ci-après cherche toute expression de
type $#$###

(il s'agit de références de cellules excel, mais je vous rassure,
nous sommes

dans Word), et supprime les $.
Par exemple, $A$123 devient A123.
Mais je voudrais que la macro me mette en plus le nouveau mot (A123)
en rouge.

Je ne vois pas comment, dans le code suivant, paramétrer les
attributs du

texte de remplacement.
Un adepte des MNS pourrait-il me proposer une solution ?
Voici la macro :
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 07/11/2004 par AB
Selection.WholeStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = "($)(?)($)(????)"
.Replacement.Text = "24"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

A votre bon coeur...
André



Avatar
AB
Salut Clément,
Aurais-tu trop élagué ? Chez moi ça ne marche que partiellement. En
revanche, j'ai simplement ajouté la ligne .Replacement.Font.Color wdColorRed à ce que j'avais essayé de faire, et ça marche très bien.
Il y aurait donc une ou plusieurs des instructions suivantes qu'il faut
laisser ?
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True

Lesquelles et pourquoi ? Pas le temps de tester : faut que j'aille au
boulot.
En tout cas, merci infiniment. Passe une bonne journée.
André

"Clément Marcotte" a écrit dans le message
de news: OUxS%
| Bonjour André,
|
| J'ai bricolé cela avant d'aller au dodo. Testé avec 2 adresses
| ajoutées au travers d'un autre texte:
|
| (En passant, elle ne fonctionne pas pas avec des adresses à 2 lettres,
| genre $AA$345, ni avec des adresses en minuscules. (mais comme tu
| récupères l'adresse d'Excel par automation, elle devrait être toujours
| en majuscules.))
|
| Sub Macro2()
| '
| ' Macro2 Macro
| ' Macro enregistrée le 07/11/2004 par AB
| ' Et légèrement modifiée et élaguée par CM
| Selection.WholeStory
| Selection.Find.ClearFormatting
| With Selection.Find
| .Text = "($)(?)($)(????)"
| .Replacement.Text = "24"
| .Replacement.Font.Color = wdColorRed
| .Forward = True
| .Wrap = wdFindContinue
| End With
| Selection.Find.Execute Replace:=wdReplaceAll
| End Sub
|
|
| "AB" a écrit dans le message de
| news:
| > Bonsoir à tous,
| > Je vais aller au dodo, car j'en ai ras le bol de buter sur un truc
| bête :
| > La macro non superfétatoire ci-après cherche toute expression de
| type $#$###
| > (il s'agit de références de cellules excel, mais je vous rassure,
| nous sommes
| > dans Word), et supprime les $.
| > Par exemple, $A$123 devient A123.
| > Mais je voudrais que la macro me mette en plus le nouveau mot (A123)
| en rouge.
| > Je ne vois pas comment, dans le code suivant, paramétrer les
| attributs du
| > texte de remplacement.
| > Un adepte des MNS pourrait-il me proposer une solution ?
| > Voici la macro :
| > Sub Macro2()
| > '
| > ' Macro2 Macro
| > ' Macro enregistrée le 07/11/2004 par AB
| > Selection.WholeStory
| > Selection.Find.ClearFormatting
| > With Selection.Find
| > .Text = "($)(?)($)(????)"
| > .Replacement.Text = "24"
| > .Forward = True
| > .Wrap = wdFindContinue
| > .Format = True
| > .MatchCase = False
| > .MatchWholeWord = False
| > .MatchAllWordForms = False
| > .MatchSoundsLike = False
| > .MatchWildcards = True
| > End With
| > Selection.Find.Execute Replace:=wdReplaceAll
| > End Sub
| >
| > A votre bon coeur...
| > André
| >
|
Avatar
AB
Salut Clément,
Aurais-tu trop élagué ? Chez moi ça ne marche que partiellement. En
revanche, j'ai simplement ajouté la ligne .Replacement.Font.Color wdColorRed à ce que j'avais essayé de faire, et ça marche très bien.
Il y aurait donc une ou plusieurs des instructions suivantes qu'il faut
laisser ?
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True

Lesquelles et pourquoi ? Pas le temps de tester : faut que j'aille au
boulot.
En tout cas, merci infiniment. Passe une bonne journée.
André

"Clément Marcotte" a écrit dans le message
de news: OUxS%
| Bonjour André,
|
| J'ai bricolé cela avant d'aller au dodo. Testé avec 2 adresses
| ajoutées au travers d'un autre texte:
|
| (En passant, elle ne fonctionne pas pas avec des adresses à 2 lettres,
| genre $AA$345, ni avec des adresses en minuscules. (mais comme tu
| récupères l'adresse d'Excel par automation, elle devrait être toujours
| en majuscules.))
|
| Sub Macro2()
| '
| ' Macro2 Macro
| ' Macro enregistrée le 07/11/2004 par AB
| ' Et légèrement modifiée et élaguée par CM
| Selection.WholeStory
| Selection.Find.ClearFormatting
| With Selection.Find
| .Text = "($)(?)($)(????)"
| .Replacement.Text = "24"
| .Replacement.Font.Color = wdColorRed
| .Forward = True
| .Wrap = wdFindContinue
| End With
| Selection.Find.Execute Replace:=wdReplaceAll
| End Sub
|
|
| "AB" a écrit dans le message de
| news:
| > Bonsoir à tous,
| > Je vais aller au dodo, car j'en ai ras le bol de buter sur un truc
| bête :
| > La macro non superfétatoire ci-après cherche toute expression de
| type $#$###
| > (il s'agit de références de cellules excel, mais je vous rassure,
| nous sommes
| > dans Word), et supprime les $.
| > Par exemple, $A$123 devient A123.
| > Mais je voudrais que la macro me mette en plus le nouveau mot (A123)
| en rouge.
| > Je ne vois pas comment, dans le code suivant, paramétrer les
| attributs du
| > texte de remplacement.
| > Un adepte des MNS pourrait-il me proposer une solution ?
| > Voici la macro :
| > Sub Macro2()
| > '
| > ' Macro2 Macro
| > ' Macro enregistrée le 07/11/2004 par AB
| > Selection.WholeStory
| > Selection.Find.ClearFormatting
| > With Selection.Find
| > .Text = "($)(?)($)(????)"
| > .Replacement.Text = "24"
| > .Forward = True
| > .Wrap = wdFindContinue
| > .Format = True
| > .MatchCase = False
| > .MatchWholeWord = False
| > .MatchAllWordForms = False
| > .MatchSoundsLike = False
| > .MatchWildcards = True
| > End With
| > Selection.Find.Execute Replace:=wdReplaceAll
| > End Sub
| >
| > A votre bon coeur...
| > André
| >
|
Avatar
Geo
Bonjour André

Dans l'aide de execute on comprend à demi mots quelles sont les valeurs par
défaut, ils disent si vous mettez ce paramètre à True, donc on en conclue
que c'est false par défaut..
Si on reprend ta liste :

.Format = True valeur par défaut = false
.MatchCase = False = valeur par défaut
.MatchWholeWord = False = valeur par défaut
.MatchAllWordForms = False = valeur par défaut
.MatchSoundsLike = False = valeur par défaut
.MatchWildcards = True valeur par défaut = false


Donc c'est Format et / ou wildcards

Vu que le texte de recherche est de la forme :
.Text = "($)(?)($)(????)"
Je dirais que le wildcase est nécessaire.
Pi j'ai pas compris à quoi sert le format :-)

--

A+

Avatar
AB
Ah, merci Geo !
Je progresse tous les jours (enfin, c'est ce que je me dis...)
A propos, j'ai identifié la cause de mes problèmes de connexion : il s'agit
de mon routeur !
J'ai accusé Wanadoo de tous les maux, à tort...
Finalement, ça marche assez bien, l'ex-service public !
A+
André

"Geo" a écrit dans le message de news:

| Bonjour André
|
| Dans l'aide de execute on comprend à demi mots quelles sont les valeurs
par
| défaut, ils disent si vous mettez ce paramètre à True, donc on en conclue
| que c'est false par défaut..
| Si on reprend ta liste :
|
| > .Format = True valeur par défaut = false
| > .MatchCase = False = valeur par défaut
| > .MatchWholeWord = False = valeur par défaut
| > .MatchAllWordForms = False = valeur par défaut
| > .MatchSoundsLike = False = valeur par défaut
| > .MatchWildcards = True valeur par défaut = false
|
| Donc c'est Format et / ou wildcards
|
| Vu que le texte de recherche est de la forme :
| .Text = "($)(?)($)(????)"
| Je dirais que le wildcase est nécessaire.
| Pi j'ai pas compris à quoi sert le format :-)
|
| --
|
| A+
|
|
Avatar
Geo
Bonjour André


A propos, j'ai identifié la cause de mes problèmes de connexion : il
s'agit de mon routeur !


Voilà une bonne nouvelle.

J'ai accusé Wanadoo de tous les maux, à tort...
Finalement, ça marche assez bien, l'ex-service public !


Si ce n'était leur kit à la gomme, ça marche bien ... maintenant.

--

A+

Avatar
Clément Marcotte
Bonjour,

Juste pour le fun, une autre approche avec les espressions régulières.
Une version avec la modification de la couleur, une autre sans.

Version sans modification de la couleur.
Ne pas oublier de cocher la référence à VBScript Regular Expressions

Sub EnleveLesDollars()
'Ne pas oublier de cocher la référence à
'Microsoft VBScript Regular Expressions
'dans le menu Outils - Références
'de l'environnement de programmation
'Version sans la modification de la couleur
'de police du texte de remplacement
Dim re As Object, letexte
Dim Match, texte1 As String, Matches
Dim position As Byte, partiegauche As String
Dim partiedroite As String, nombre As Integer
Set re = New RegExp
re.Pattern = "x24w*x24d*"
re.IgnoreCase = False
re.Global = False
Selection.WholeStory
texte = Selection
Do
Set Matches = re.Execute(texte)
For Each Match In Matches
position = InStrRev(Match.Value, "$")
partiegauche = Mid(Match.Value, 2, position - 2)
partiedroite = Right(Match.Value, Match.Length - position)
texte1 = partiegauche & partiedroite
texte = re.Replace(texte, texte1)
Next
Loop Until Matches.Count = 0
Selection.Delete
Selection.InsertAfter texte
Selection.MoveRight unit:=wdCharacter, Count:=1
End Sub

Version avec modification de la couleur.
Ne pas oublier de cocher la référence à VBScript Regular Expressions


Sub EnleveLesDollars1()
'Ne pas oublier de cocher la référence à
'Microsoft VBScript Regular Expressions
'dans le menu Outils - Références
'de l'environnement de programmation
'Version avec la modification de la couleur
'de police du texte de remplacement
Dim re As Object, letexte
Dim Match, texte1 As String, Matches
Dim position As Byte, partiegauche As String
Dim partiedroite As String
Set re = New RegExp
re.Pattern = "x24w*x24d*"
re.IgnoreCase = False
re.Global = False
Do
Selection.WholeStory
texte = Selection
Set Matches = re.Execute(texte)
For Each Match In Matches
Selection.StartOf unit:=wdCharacter, Extend:=wdMove
Selection.MoveRight unit:=wdCharacter, Count:=Match.FirstIndex
Selection.MoveRight unit:=wdCharacter, Count:=Match.Length,
Extend:=wdExtend
Selection.Font.Color = wdColorRed
position = InStrRev(Match.Value, "$")
partiegauche = Mid(Match.Value, 2, position - 2)
partiedroite = Right(Match.Value, Match.Length - position)
texte1 = partiegauche & partiedroite
Selection.InsertAfter texte1
Selection.Collapse wdCollapseStart
Selection.MoveRight wdCharacter, Len(Match.Value), wdExtend
Selection.Delete
Next
Loop Until Matches.Count = 0
Selection.MoveRight wdCharacter, 1
End Sub

"AB" a écrit dans le message de
news:
Bonsoir à tous,
Je vais aller au dodo, car j'en ai ras le bol de buter sur un truc
bête :

La macro non superfétatoire ci-après cherche toute expression de
type $#$###

(il s'agit de références de cellules excel, mais je vous rassure,
nous sommes

dans Word), et supprime les $.
Par exemple, $A$123 devient A123.
Mais je voudrais que la macro me mette en plus le nouveau mot (A123)
en rouge.

Je ne vois pas comment, dans le code suivant, paramétrer les
attributs du

texte de remplacement.
Un adepte des MNS pourrait-il me proposer une solution ?
Voici la macro :
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 07/11/2004 par AB
Selection.WholeStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = "($)(?)($)(????)"
.Replacement.Text = "24"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

A votre bon coeur...
André