Nombre variable de ControlButton et macros.

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.
 

Creepy

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

chris

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

Ashaar

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

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 930
Membres
103 984
dernier inscrit
maliko67