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.