Nombre variable de ControlButton et macros.

  • Initiateur de la discussion Initiateur de la discussion Ashaar
  • 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 !

Ashaar

XLDnaute Junior
Bonjour le Forum,

Je récupère dans une feuille Excel un certain nombre de fichiers présent dans un répertoire par :

Dim rw As Long
Dim Chemin As String, LesFichiers As String

Chemin = 'C: \\Bébé\\'
LesFichiers = Dir(Chemin, vbNormal)
rw = 2

Do While LesFichiers <> ''
Cells(rw, 1) = LesFichiers
rw = rw + 1
LesFichiers = Dir()
Loop

Ensuit je crée un menu (ControlPopup) et autant de Boutons (ControlButton) qu'il y a de fichiers.


Set NewSubMenu = NewMenu.Controls.Add(Type:=msoControlPopup)
NewSubMenu.Caption = 'Toinou'

Set NewButton = NewSubMenu.Controls.Add(Type:=msoControlButton)
With NewButton
.Caption = Cells(LaLigne, 1)
.OnAction = 'Macro1'


Le problème est que .On action = '…' attend le nom d'une macro.
Ne sachant pas à l'avance combien de fichiers je vais avoir et quels seront leurs noms, je ne peux pas affecter les macros que je souhaite associer à ces boutons.

En l'occurrence je veux ouvrir le fichier sélectionné par le bouton (Workbooks.Open..)

Résultat, je me retrouve avec un joli Menu et pleins de boutons qui ne me servent à rien.... grmlrd.

J'espère m'être clairement expliqué ( pas toujours évident ) et vous remercie par avance de toute l'aide que vous pourrez m'apporter.
 
Hello le Forum, Ashaar,

Je cherche depuis 5 mn mais je ne retrouve pas.

Frederique Soigneau (Référence dans le omnde des macros VBA), avait fait un exemple de creation dynamqiue de bouton avec le onaction qui marchait.

Je n'arrive pas à retrouver le fichier, j'avais vu cet exemple sur ExcelLabo, mais je remets pas la main dessus.

le fichier generait une commandbar avec X boutons (autant que de macros) et attribuait les onaction.

Fait une recherche je pense que si tu trouves ca te donneras une piste.

++

Creepy
 
Bonjour
Une autre piste peut-être :
Si les macros font la même chose à part ouvrir un fichier différent, tu devrais pouvoir utiliser la même macro : en récupérant une info attachée au bouton (caption ou autre), tu pourras orienter vers le bon fichier.
Tu peux aussi sur ce principe avoir une macro unique qui appelle des macros ou fonctions différentes selon le bouton activé.

Message édité par: chris, à: 06/08/2005 14:06
 
Bonjour le forum, Creepy, chris.

Merci à vous deux pour les idées.
Effectivement, le site de F. Sigonneau est riche d'enseignement.

J'ai pu résoudre mon soucis : J'ai enregistré mon classeur en macro complémentaire (.xla) et j'ai stocké les répertoires et boutons dans la Feuil1 :
Ligne 1 = Répertoires
Lignes suivantes = Nom des fichiers

Ca donne ça :


Sub FicExcel()
Dim Wbk As Workbook

With CommandBars.ActionControl
NomBouton = .Caption
End With

Set Moi = Workbooks('MonFichier.xla').Sheets('Feuil1')
Moi.Activate

Cells.Find(What:=NomBouton, _
After:=ActiveCell, _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False).Activate

NumCol = ActiveCell().Column
NomRepert = Cells(1, NumCol)

On Error Resume Next
Set Wbk = Workbooks(NomBouton)
On Error GoTo 0
If Not Wbk Is Nothing Then MsgBox 'Classeur déjà ouvert.' _
Else Workbooks.Open 'C:\\' & NomRepert & '\\' & NomBouton
End Sub
 
- 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