Cliquer un bouton via vba(excel)

needlesurfer Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009 - 15 déc. 2009 à 22:02
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 15 déc. 2009 à 23:28
Bonjour,
Mon premier post ici. J'ai un pépin, défi, vba dans excel et à la lecture de ce forums je me suis dit que vous pourriez peut-être m'aider:

Je dois cliquer un bouton via vba dans une workbook excel. Il existe plusieurs bouton sur ma page et un à un je voudrais qu'excel clique les bouton lorsque j'active la page (worksheet_activate).

J'aimerais qu'Excel clique le bouton car le macro attaché à ce bouton se sert de la position du bouton (application.caller.topleftcell) pour exécuter les commandes qui s'y trouvent.

Donc le plus simple pour moi est de m'arranger pour que worksheet_activate "appuie" sur les boutons un à un et non de réécrire tout le code du bouton dans un worksheet_activate en changeant la source de positionnement.

Je n'ai pas trouvé comment y arriver et je suis incapable de concevoir qu'Excel (vba) ne puisse faire ça, après tout cliquer sur un bouton change son état et cet état est connu d'excel, sûrement Excel peut-il à son tour changer l'état du bouton...

merci

4 réponses

needlesurfer Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009 1
15 déc. 2009 à 22:50
désolé pour le mauvais forum...

Bouton1_click ne fonctionne pas, (sub or command not found) j'ai déjà essayé.

en fait voici le code se sera plus facile:

je n'ai pas mis les dim et les set alors j'explique:
worksheet_activate formate d'abord la page en fonction de ce qui se trouve sur d'autre feuilles, ensuite je sélectionne la case ou se trouve le bouton, identifie le bouton qui s'y trouve exactement et de là je voudrais cliquer dessus via vba (les boutons étant créé par script via le worksheet_activate, ensuite une macro leur est assigné, toujours via vba dans worksheet_activate, donc le nom exact n'est pas connu et changera à chaque rafraichissement de la feuille). Dans le script ci-dessous myShape.clic représente le clic, qui ne marche pas. Identifier le bouton est en fait assez facile, le script ci-dessous y arrive via intersect.
buttonrow.Offset(0, 2).Select
    For Each myShape In ActiveSheet.Shapes
        If Intersect(myShape.TopLeftCell, ActiveCell) Is Nothing Then
            'do nothing
        Else
            myShape.clic
        End If
    Next myShape
1
Rejoignez-nous