Re:Remplacement d'un mot par un autre macro
Bonjour Odile, bonjour Pascal, bonjour à toutes et à tous
Alors, je commence par le début :
la constante
Generique contient la chaîne de caractères
'*--*---**-------', les tirets étant en fait des espaces.
Dans ton code, tu faisais les tests sur :
1) '* ' &
MonMot & ' *'
2) MonMot & ' *'
3) '* ' &
MonMot
4) MonMot
La constante
Generique a un peu la même structure :
'*-|-*||--|-*||*-|--||--|--' (les caractères
| et
|| ne sont là que la lisibilité), soit :
1) '* ' et
' *'
2) ' ' et
' *'
3) '* ' et
' '
4) ' ' et
' '.
Les parties de chaîne avec seulement des espaces sont présentes pour pouvoir faire une boucle (avec
j qui varie de 0 à 3. Ces parties de chaîne composée uniquement d'espaces n'ont que cette dernière utilité.
Donc, quand
j = 0, on a :
Mid(Generique, j * 4 + 1, 2) qui est égal à
Mid(Generique, 1, 2),
et la fonction
Mid(Texte, NoDébut, NbCar) renvoit une sous-chaîne égale à
Texte à partir
NoDébut de longueur
NbCar. Je pense que tu pourras trouver seule en faisant les calculs que pour
j = 0, on obtient
'* ' avant
MonMot et
' *' après.
La fonction
Trim(Chaîne) supprime les espaces au début et à la fin de
Chaîne ; elle a sont utilité pour les autres valeurs de
j car
' ' & MonMot & ' ' = ' PP ' deviendra alors 'PP' grâce à cette fonction.
Maintenant :
NoCar = WorksheetFunction.Search(MotGen, Phrase, 1)
Phrase = Mid (Phrase, 1, NoCar - 1) & NouveauMot & _
Mid(Phrase, NoCar + Len(MotGen))
WorksheetFunction.Search(MotGen, Phrase, 1) retourne la position de la sous-chaîne
MotGen dans la chaîne
Phrase,
Phrase étant le texte contenu dans la cellule et
MotGen celui cherché par la procédure épuré du caractère générique
'*'.
Avec les explications précédentes sur la fonction Mid, tu peux retrouver ce que fait l'instruction
Phrase = Mid (Phrase, 1, NoCar - 1) & NouveauMot & _
Mid(Phrase, NoCar + Len(MotGen))
Elle place dans la variable
Phrase la partie de chaîne située avant le texte à remplacer, y ajoute le texte de remplacement puis la partie de chaîne située après le texte à remplacer...
Ça fait pas trop, là ? :sick:
Lis ça tranquillement et tu verras que ce n'est pas si compliqué qu'il y paraît de prime abord
A+