Bonjour, Salut Jean-Eric !
Si tu t'es penché sur l'article de l'Aide, aimablement fourni par Jean-Eric, tu as peut-être vu où ça péchait et apporté un correctif.
Sinon plus en détail : tu as en effet utilisé Set pour initialiser a, déclarée de type Range, et on peut supposer que tu as vérifié que l'expression à droite du signe = renvoyait bien un objet Range (soit que ta colonne A2 contenait au moins une valeur à partir de A2...)
Par contre, on ne sait ce que sont TTT8 et TTT9 (sinon des variables), ni si elles sont déclarées (on n'en voit pas de déclaration), mais ici à droite du signe = tu as placé une expression qui utilise Range.Find. Cette méthode renvoie un objet Range si la recherche aboutit (rien dans le cas contraire).
Au vu de ton expression à droite du signe = qui devrait initialiser TTT8 (et même chose pour TTT9) avec une référence d'objet, il faut utiliser Set TTT8 = ...
Mais si tu n'entendais pas initialiser TTT8 comme variable Range, c'est alors l'expression à droite de = qui est incomplète si elle doit renvoyer une autre valeur.
(A noter que ta ligne TTT9 double inutilement la même recherche : si la première recherche en col. A aboutit, tu disposeras des cellules en G et H de la même ligne que tu vises.) Mais c'est toi qui sait ce que tu veux en tirer, cela n'apparaît pas dans ton code. Et une fois ce point élucidé, note aussi que tu n'as pas de gestion d'erreur pour le cas où la recherche n'aboutirait pas...
Cordialement.