Bonjour,

J'effectue quelques retouches et corrections de bug sur une petite application Excel d'une connaissance qui a besoin d'aide dans son travail, elle n'a aucune formation en VBA ou en programmation, de près ou de loin. Les gens avec qui elle travaille non plus, d'ailleurs. Il ne s'agit pas pour moi de refaire l'application ou quoi que ce soit, juste de blinder un peu son code VBA, de corriger les bugs et d'améliorer un peu la vie des gens qui utilisent le fichier Excel.

Au fil de mes revues je constate non pas un "problème" mais un comportement très frustrant. Son application comporte une feuille Excel de saisie avec des boutons sur les lignes. Les boutons ont été créés via l'assistant, je suppose.
Lors d'un clic sur un de ces boutons, ce n'est pas la ligne du bouton cliqué qui est prise en compte, mais la ligne active. Le soucis est que celle-ci n'est pas "mise à jour" sur la bonne ligne lors du clic sur le bouton. Pour utiliser un bouton correctement, il faut donc sélectionner la bonne ligne puis cliquer sur le bouton. C'est finalement assez bête car on pourrait cliquer sur n'importe quel bouton de la même colonne, cela donnerait le résultat de la ligne sélectionnée uniquement.

J'ai pas mal cherché, et je n'ai pas trouvé de quoi solutionner le problème. J'ai lu des sujets disant que les boutons de base dans Excel n'étaient pas terrible et qu'il valait mieux utiliser des boutons ActiveX, mais très sincèrement je n'ai pas trop la tête à aller apprendre comment les faire et utiliser, surtout que ça impliquerait que je touche à la base de l'application, ce qui n'est pas mon but initialement. De même par rapport aux méthodes qui consistent à enlever les boutons et à faire un événement de double clic et autres alternatives.

J'ai vu une espèce de méthode utilisant un Application.Top/Cell(blablabla).height +1, je n'ai pas réussi à comprendre comment ça marchait. J'ai cru comprendre qu'il y avait un attribut "tag" sur le bouton, mais à chaque fois que j'essaye d'y accéder je me rate.

Bref, je souhaite savoir si quelqu'un peut m'expliquer comment récupérer la ligne d'un bouton cliqué, ou récupérer une quelconque information, sans utiliser de bouton ActiveX ni enlever le bouton pour le remplacer par un événement ?
À défaut, y a t-il une alternative qui n'implique pas de refaire la feuille de saisie?

Merci.