Bonjour,
J'ai un programme que j'ai fait en Vba et qui fonctionne depuis des années. Tout à coup, ça plante. En y allant de pas à pas, je finis par trouver exactement où. C'est la méthode « replace » qui, vous ne le croirez pas, fait changer la feuille active. (!!!!)
Voici le code :Il s'agit de remplacer les espaces et les caractères accentués d'une chaîne qui est dans une cellule. Rg est une variable de type « range » qui pointe sur cette cellule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 With Rg .Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False .Replace What:="'", Replacement:="" .Replace What:="-", Replacement:="" .Replace What:="é", Replacement:="e" .Replace What:="ê", Replacement:="e" [...............ici on saute une douzaine de remplacements] .Replace What:="ù", Replacement:="u" End With
Aussitôt que le programme arrive au premier « replace », le focus passe de la feuille 1 à la feuille 2. Comme je suis en pas à pas, je peux cliquer pour redonner le focus à la page 1 et alors, au deuxième « replace », de nouveau c'est la feuille 2 qui est activée. Si je clique sur une autre feuille, 3, 4, 5, c'est toujours la feuille 2 qui est réactivée si je fais avancer le programme d'une ligne.
Je travail avec une version Office 2007 qui a toujours bien fonctionné. J'ai fait rouler les diagnostiques dans l'option « Ressources » de mon Excel et tout semble en ordre. Sauf qu'à la fin, on m'envoie sur le Net chez Microsoft sur une page qui n'existe plus.
Pierre Cloutier
---
Partager