Bonjour! Voici une question épineuse ...
Au sein d'une macro, j'ai besoin de rechercher une chaîne de caractère parmi une longue liste de chaînes qui sont en colonne dans le classeur.
Par exemple, j'ai en colonne A tous les prénoms de mes collègues (1000 noms) et je cherche la ligne où apparait Robert.
Me souvenant de mes vieux cours d'info, je me tente un "diviser pour régner" :
1) Je trie la colonne A par ordre croissant
2) Je regarde à la moitié, ligne 500. Je tombe sur Laurent
3) Robert > Laurent dans l'ordre alphabétique donc je recommence en me concentrant sur les lignes 501 à 1000, ceci avec une fonction par récurrence.
Problème, une comparaison "If string1 > string2 ..." ne donne pas le même ordre que le tri "Selection.Sort" dans quelques cas particuliers.
Si je trie par ordre croissant:
Oi
Oa
O-Z
J'obtiens
Oa
Oi
O-Z
Pourtant, si string1="Oa" et string2="O-Z" alors string1 > string2.
En fait, la règle de tri par ordre alphabétique n'est pas cohérente entre les deux méthodes et de ce fait, ma méthode de recherche échoue pour toutes les chaînes incorporant des tirets (et je suppose que je vais découvrir d'autres exceptions).
Alors, que faire ?