Me revoilà,
j'ai regardé le code et la façon dont il fonctionne, je n'ai pas spécialement l'impression que les fonctions sont optimisables, en revanche, j'ai vu qu'assez souvent tu allais dans worksheet_change car tu modifiais une ou plusieurs cellules de ta feuille, et que ce que faisait ton worksheet_change était simplement mettre à jour la valeur de y8.
Et que l'affichage à l'écran n'était pas désactivé non plus, du coup je me suis permis de désactiver les évènements et la mise à jour automatique à l'écran, et j'ai bien l'impression que ça va plus vite, normal comme ça ne va plus vérifier 2 fois quelle plage a été modifié à chaque fois qu'il y a une modification dans la feuille. Première vérification à cause de ta macro GetRandomNumber, et deuxième à cause du worksheet_change qui va modifier la valeur de y8 et donc relance worksheet_change.
J'ai juste fait une toute petite optimisation supplémentaire, tu recalculais y8 à chaque fois alors qu'il ne servait pas pour ta boucle, je l'ai mis à la suite de celle-ci pour qu'il ne soit recalculé que quand tu auras ta bonne combinaison.
Je te joins le fichier avec modification: