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

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

  • Attribution nom feuille.xlsm
    19.8 KB · Affichages: 47

Pierrot93

XLDnaute Barbatruc
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
@+
 

Yaloo

XLDnaute Barbatruc
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: 44
  • Capture.PNG
    Capture.PNG
    6.9 KB · Affichages: 49

Pierrot93

XLDnaute Barbatruc
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"
 

Yaloo

XLDnaute Barbatruc
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+
 

Pierrot93

XLDnaute Barbatruc
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
 

Yaloo

XLDnaute Barbatruc
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
 

Si...

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

salut

autres solutions (ActiveX ou pas) avec une seule macro commune.
 

Pièces jointes

  • SélectionParCodeName.xlsm
    35.1 KB · Affichages: 50

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 148
Membres
103 131
dernier inscrit
diaz.evelyne17