Boucle sur commandbutton

Bonjour à tous,

J'ai un planning Excel, 12 onglets de janvier à décembre.

Sur chaque onglet, 12 boutons de commande (janvier à décembre) qui me permettent simplement d'ouvrir l'onglet correspondant.

Jusqu'à présent, je ne m'embetais pas et faisait un copier coller sur les 12 feuilles de chaque code de bouton.

Je souhaiterais améliorer mon fichier en créant une boucle sur ces boutons, dans ce genre là :

Sub mois ()
Dim commande As Control
'pour chaque bouton de la feuille
For Each commande In ActiveSheet
' en fonction du mois on ouvre la feuille
    Select Case commande.Name
        Case "btn_janvier"
            Sheets("Janvier").Select
        Case "btn_fevrier"
            Sheets("Février").Select
...
    End Select
Next
End Sub

Sauf qu'en fait ca ne marche pas puisque rien n'indique quoi faire au final... Est ce possible ou non ?

Bonjour Aquarium,

Qu'est ce que tu veux faire en faite ?

Renommer via une boucle tes douze bouton sur tes douze feuilles ?

Insérer via une boucle tes douze bouton sur tes douze feuilles ?

Dans l'attente de ton retour pour t'aider !

Non c'est encore plus simple,

J'ai 12 feuilles nommées de Janvier à Décembre.

Sur chaque feuille, j'ai 12 boutons de commande (Janvier à Décembre) qui ouvrent la feuille correspondante.

Pour chaque bouton (sur chaque feuille), j'ai le code en pièce jointe.

Je me posais la question de savoir s'il était possible de l'améliorer dans une boucle unique plutot que d'avoir 12 fois les même macros.

planning1 vba boutons

Ah ouais j'y était pas xDDD

Pas besoin de boucle mais plutôt de réussir à obtenir le nom du bouton sur lequel tu viens de cliquer et ensuite tu dit que tu veux aller sur la feuille qui s'appel "nom bouton" ;D

Malin !

Sub AppelButton()
nomshape = Application.Caller
ActiveSheet.Shapes("" & nomshape & "").Select
nomshape = Selection.Caption
Sheets(nomshape).Select
End Sub

Voilà

Si tu veux des explications sur le code ou si tu a d'autre question, n'hésite pô !

Mes boutons sont des Controles ActiveX, ca change quelque chose ?

Cependant, je ne vois absolument pas comment positionner ton code.

En faisant pas à pas (F8), sur Application.caller, il met "Erreur 2023". Du coup, forcément, derrière ca suit pas.

Pourquoi "Erreur 2023" ?

Bonjour à vous deux

Le soucis avec tes contrôles activex, c'est que tu ne peux pas affecter une macro à ces contrôles, car ils ont déjà des évènements définis, tu ne pourras pas avoir moins que un évènement minimum par contrôle, en revanche, si tu utilises plutôt des formes auxquelles tu attribues un programme, il ne restera plus qu'à savoir qui lance le programme pour ensuite sélectionner la feuille en conséquence!

EDIT :

J'ai fait une macro qui sélectionne la feuille dont le nom est renseigné dans le texte du bouton :

16test-forme.xlsm (15.54 Ko)

Ps: j'ai utilisé une forme pour le faire, et non un contrôle activex

C'est bizarre que sa te mette des erreurs :0

Édit : RE - coucou Ausecour xD

Peut-être une histoire de référence manquante ? Je te met donc un fichier pour que tu compare les référence présente dans mon excel et le tiens.

Mes boutons sont des Controles ActiveX, ca change quelque chose ?

Sa change tout oui.

Même pas au niveau de mon code, mais au niveau de la logique de ton projet.

Un bouton ActiveX va appeler la procédure que tu lui a codifier.

Donc à moins que tu ai envie de faire (12 boutons x 12 feuilles)144 boutons qui disent :

Call AppelButton

donc se qui reviens à ton cas actuel

Je t'invite à créer des boutons de formulaire et de faire un simple "clic droit" et "affecter une macro"

Puis copier coller ce bouton autant de fois que tu veux en changeant le nom !

Restant à dispo ^^

19pour-aquarium.xlsm (37.77 Ko)

Je comprends, donc en fait, impossible d'alléger mon code avec ces Active X, à moins de tout changer pour des formes... Dommage alors !

Merci du coup de main quand même !

Je regarde ton fichier

Un bouton ActiveX va appeler la procédure que tu lui a codifier.

Donc à moins que tu ai envie de faire 12 boutons x 12 feuille (144 boutons) qui disent :

C'est le cas à l'heure actuelle ! Quand j'ai fait le fichier, je débutais juste (j'étais alors bien content de mes trouvailles )

Ah moins que tu mettes ces boutons dans un formulaire affiché de façon non modulaire (show vbmodeless).

Dans ce cas là tu garderais juste une fois tes boutons, tu peux appeler ce formulaire via un bouton, le lancement de ton fichier, le changement d'une feuille... c'est toi qui vois

ça ne ferait que 12 boutons mais visibles de n'importe ou, les formulaires sont insensibles aux changements de feuille

Édit : Fichier modifié pour avoir les douze bouton, sur les douze feuille, nommer chacun au mois !

21pour-aquarium.xlsm (113.23 Ko)

Finalement, j'ai modifié mes boutons comme montré par Juice. Et ca marche impec en un petit bout de code ! La classe à Vegas !!

Merci beaucoup !!!

Bon ben ya plus qu'à !

Rechercher des sujets similaires à "boucle commandbutton"