Lancer une macro depuis plusieurs boutons pour récupérer le CodeName d'une feuille

  • Initiateur de la discussion Initiateur de la discussion Yaloo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Yaloo

XLDnaute Barbatruc
Bonjour à tous,

Pour aider un demandeur et pour mon savoir personnel.

Dans une feuille "Base", est-il possible de récupérer le N° d'un bouton (juste après le mot "Bouton ") pour lancer une macro permettant, par exemple, d'ouvrir la feuille dont le CodeName est "Feuil" & N°Bouton ?

J'ai essayé avec Application.Caller mais....

Voici mes premiers essais, non concluant :

VB:
Option Explicit
Sub ActFeuille()
Dim Feuille, Num&
 Num = Right(Application.Caller, Len(Application.Caller) - 7)
 Feuille = "Feuil" & Num
 Active_Feuille Feuille
End Sub
Private Sub Active_Feuille(Feuille As Worksheet)
  Feuille.Activate
  'plus si affinité
  'copie
  'mise en forme
End Sub

Difficile d'expliquer tout ça, voir l'exemple dans le fichier ci-joint

Merci d'avance

Martial

PS : Est-il possible de le faire avec des boutons ActiveX ?
 

Pièces jointes

Re : Lancer une macro depuis plusieurs boutons pour récupérer le CodeName d'une feuil

Bonjour,

si tu veux activer la feuille par son codename et non par son nom, regarde peut être ceci :
Code:
Option Explicit
Sub ActFeuille()
Dim Feuille, Num&
Num = Right(Application.Caller, Len(Application.Caller) - 7)
Feuille = "Feuil" & Num
Active_Feuille Feuille
End Sub
Private Sub Active_Feuille(ByVal Feuille As String)
ThisWorkbook.VBProject.VBComponents(Feuille).Activate
End Sub

bon après midi
@+
 
Re : Lancer une macro depuis plusieurs boutons pour récupérer le CodeName d'une feuil

Salut Pierrot,

Merci pour ta réponse mais il m'indique une erreur 1004 lorsque je suis sur la ligne
ThisWorkbook.VBProject.VBComponents(Feuille).Activate

Capture.PNG

Faut-il cocher une référence particulière ?

A+
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    6.9 KB · Affichages: 51
  • Capture.PNG
    Capture.PNG
    6.9 KB · Affichages: 52
Re : Lancer une macro depuis plusieurs boutons pour récupérer le CodeName d'une feuil

Re,
A priori tu as une espace ici "Activ ate"... sinon cocher l'equivalent de "faire confiance au projet visual basic", sous 2010 ca doit être "accès approuvé au modèle d'objet du projet vba"
 
Re : Lancer une macro depuis plusieurs boutons pour récupérer le CodeName d'une feuil

Re,

Il n'y avait pas d'espace dans "Active" par contre c'est bien ok lorsque l'on coche l'option.

Sais-tu si ça peut fonctionner avec des Bouton de commande ActiveX ?

A+
 
Re : Lancer une macro depuis plusieurs boutons pour récupérer le CodeName d'une feuil

Re,

là en l'état pas beaucoup de code 🙂

dans un module standard :
Code:
Option Explicit
Public tb() As New Classe1

Dans un module de classe, nom du module (classe1) :
Code:
Option Explicit
Public WithEvents mbouton As MSForms.CommandButton
Private Sub mbouton_Click()
ThisWorkbook.VBProject.VBComponents("Feuil" & Mid(mbouton.Name, 14)).Activate
End Sub

dans le module thisworkbook :
Code:
Option Explicit
Private Sub Workbook_Open()
Dim x As OLEObject, i As Byte
For Each x In Sheets("Base").OLEObjects
    If TypeName(x.Object) = "CommandButton" Then
        i = i + 1
        ReDim Preserve tb(1 To i)
        Set tb(i).mbouton = x.Object
    End If
Next x
End Sub
 
Re : Lancer une macro depuis plusieurs boutons pour récupérer le CodeName d'une feuil

Re,

Merci Pierrot, ça fonctionne tout à fait.

Je me le garde dans mes archives, c'est sûr il va resservir à un moment ou à un autre.

Merci encore

Martial
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour