Afficher un message
Vieux 19/04/2006, 16h22   #9 (permalink)
Charly2
XLDnaute Accro
 
Avatar de Charly2
 
Date d'inscription: octobre 2005
Version Excel : Excel 2000 (PC)
Messages: 1 919
Par défaut 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+
__________________
Amicalement,
Charly2
Charly2 est déconnecté   Réponse avec citation