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 :
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
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.

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


---