Bonjour Mercure67 et à tous les autres 
🙂,
Pour le 
FUN, une comparaison en durée d'exécution des formules et code VBA.
Compléter les cellules D1 et D2. Cliquer sur le bouton en face de chaque méthode pour en calculer le résultat et le temps d’exécution. Les méthodes :
- via VBA en utilisant un dictionary
 
- via formule matricielle utilisant la fonction EQUIV
 
- via formule matricielle utilisant la fonction NB.SI
 
- via VBA avec une fonction personnalisée ValeursUniquesDansPlage()
 
Nota : le code de la fonction 
ValeursUniquesDansPlage() a été modifié par ma pomme. La valeur à rechercher dans 
Ligne doit être entourée de crochets 
[...
].
Supposons que 
Ligne contienne la valeur 
[x123] et pas 
x12. Si par la suite on recherche simplement la valeur 
x12 alors, InStr(1, 
Ligne, Valeur, vbBinaryCompare) sera supérieur à 
0 (on trouvera le x12 de 
 [x123] ). Ce qui laisserait croire que 
x12 a déjà été rencontré, et ce n'est pas le cas. En cherchant 
[x12], InStr(1, Ligne, Valeur, vbBinaryCompare) retourne bien 
0. Par voie de conséquence, on a aussi éliminé les valeurs vides.
Attention ! le fichier passe en calcul manuel à l’ouverture. Il doit normalement repasser en mode automatique à la fermeture. A vérifier par vos soins.