XLS ou XLA ?

J'ai crée un classeur excel avec des boutons lancant des macros . Mon fichier xls devenant relativement important,j'ai enregistré le classeur en xla pour mettre mes proc en macros complémentaires. Je me retrouve donc avec 2 fichiers, le xls et le xla. J'ai ajouté au xls une référence au xla. Puis-je sans danger effacer les macros du .xls ? Et comment dois-je faire pour que mes boutons présents sur les feuilles xls soient affecté au macros xla, cela n'a pas l'air de se faire automatiquement.

Une fois que ton classeur .xls a été enregistré en macro complémentaire (.xla) tu te retrouves en effet avec deux fichiers. Le classeur (.xls) ne sert plus à rien. Tu peux le détruire. Tu pourras toujours visualiser et modifier les procédures et fonctions de ta macro complémentaire dans l'éditeur VBE. La chose à faire maintenant (après avoir détruit ou mis de côté au cas où ton classeur.xls) est d'installer ta macro complémentaire : dans Excel tu fais Outils\Macros complémentaires..., tu cherches la tienne dans la liste, tu coches la case en face de son nom puis OK (si elle n'est pas dans la liste tu la cherches avec Parcourir puis même chose). A partir du moment où elle estinstallée, ta macro complémentaire sera lancée à chaque ouverture d'Excel et tu pourras appeler ses procédures et fonctions depuis les modules de code d'autres classeurs, ou utiliser tes fonctions dans des cellules d'une feuille de calcul (à condition qu'elles se contentent de renvoyer un résultat). Oui, pour les boutons, il n'y a pas de miracle. Sa macro complémentaire devrait, à mon avis, comporter un module réservé à la création d'une BO personnalisée avec le nombre de boutons dont il a besoin et reliés à ses procédures. Il pourrait s'inspirer de ce bout de code, qui crée une barre d'outils avec deux boutons :

dans un module standard

sub CreeBO() 'à appeler dans le Workbook_Open du .xla
 Dim MaBar, Btn1, Btn2
 
 On Error Resume Next
 Set MaBar = Application.CommandBars.Add("MaBarre")
 With MaBar
  Set Btn1 = .Controls.Add(msoControlButton)
  With Btn1
   .FaceId = 39
   .OnAction = "Macro1"
  End With
  Set Btn2 = .Controls.Add(msoControlButton)
  With Btn2
   .FaceId = 40
   .OnAction = "Macro2"
  End With
  .Visible = True
 End With
 end sub
sub Macro1()
 MsgBox "Bouton 1"
 end sub
sub Macro2()
 MsgBox "Bouton 2"
 end sub
sub DelBO() 'à appeler dans le Workbook_AddinUninstall du .xla
 On Error Resume Next
 Application.CommandBars("MaBarre").Delete
 end sub

Auteur :

Mots clefs associés à cette page : , ,