Code VBA commun au classeur et non à un onglet

Bonjour à tous,

J'ai actuellement des boutons de commande ActiveX sur un onglet. Le code VBA de ces boutons sont intégrés dans l'onglet.
Comme ces boutons sont génériques à mon classeur, je ne sais pas ou je dois placer ce code. J'ai essayé de le mettre dans un module mais cela ne fonctionne pas quand j'appuie sur le bouton.
Est ce qu'il faut que je rajoute quelque chose pour que les boutons soit génériques au classeur? Ou faut-il mettre ce code ?

Voici le code des boutons que j'ai réduit énormément :

Sub CommandButton120_Click(): Call ButtonChange_Oui(CommandButton120): End Sub

Sub ButtonChange_Oui(TB As Object)
    Select Case TB.Caption
    Case "Non Renseigné-Unknown"
        TB.Caption = "Oui-Yes"
        TB.BackColor = RGB(0, 255, 0)
    Case "Oui-Yes"
        TB.Caption = "Non-No"
        TB.BackColor = RGB(255, 0, 0)
    Case "Non-No"
        TB.Caption = "Non applicable-Not applicable"
        TB.BackColor = RGB(253, 253, 109)
    Case "Non applicable-Not applicable"
        TB.Caption = "Non Renseigné-Unknown"
        TB.BackColor = RGB(255, 255, 255)
    End Select
End Sub
Je vous remercie pour votre aide.

Guillaume

Bonjour,

J'ai essayé de le mettre dans un module mais cela ne fonctionne pas quand j'appuie sur le bouton.

As-tu bien réassigné les macros aux boutons ? Le lien n'est plus établi si tu les as déplacé dans un module, même si leur nom reste identique.

Bonjour Oyobrans

Je n'ai pas réaffecté la macro, je ne sais pas comment faire sur les boutons ActiveX.

Quand je fais un clic droit, je ne peux pas affecter de macro et quand je double clique sur le bouton, cela créé une procédure Private Sub dans l'onglet.

Peux tu m'indiquer la marche à suivre s'il te plait ?

Merci :-)

Guillaume

Et si tu mets seulement la procédure appelée en la faisant précéder de Public dans un autre module ?

Sinon, as-tu vraiment besoin de contrôles ActiveX ? Ne peux-tu pas utiliser des contrôles de formulaire ?

Sauf erreur de ma part cela ne fonctionne pas.

Je suis obligé de passer par ActiveX car je mets de la couleur sur le fond du bouton.

Cela voudrait dire que le code des boutons ActiveX sont liés obligatoirement à l'onglet. C'est bien cela ?

Ça a l'air d'être le cas pour le fait que leur code soit lié à la feuille.

Pas trop se compliquer la vie pour une couleur peut-être ?

Sinon, si tu mets ceci dans un module sans toucher au reste, ça devrait fonctionner :

Public Sub ButtonChange_Oui(TB As Object)
    Select Case TB.Caption
    Case "Non Renseigné-Unknown"
        TB.Caption = "Oui-Yes"
        TB.BackColor = RGB(0, 255, 0)
    Case "Oui-Yes"
        TB.Caption = "Non-No"
        TB.BackColor = RGB(255, 0, 0)
    Case "Non-No"
        TB.Caption = "Non applicable-Not applicable"
        TB.BackColor = RGB(253, 253, 109)
    Case "Non applicable-Not applicable"
        TB.Caption = "Non Renseigné-Unknown"
        TB.BackColor = RGB(255, 255, 255)
    End Select
End Sub

En faisant un test rapidement, ça passe.

Bonjour Oyobrans,

Effectivement j'avais mal dû réaliser le code Public, cela fonctionne également.

Je vais réfléchir pour les couleurs.

Merci de ton aide.

Passe une bonne journée.

Guillaume

Rechercher des sujets similaires à "code vba commun classeur onglet"