Bonjour,
Comme promis (si cela vous est toujours utile), voici une solution que j'utilise régulièrement.
En plus de "MonAppli.xls", je crée un fichier d'installation (InstalMonAppli.xls par exemple) avec le code suivant :
"
Sub Auto_Open()
'
'Lancement du programme "MonAppli".
'Si le bouton de lancement existe déjà, on le supprime et on le recrée.
'S'il n'existe pas de bouton de lancement de l'application "MonAppli",
'on en installe un dans la barre d'outils "Standard"
'L'image de ce bouton se trouve dans la feuille "Feuil1" de ce fichier.
'
chemin = ActiveWorkbook.Path
ChDir chemin
Set MonBouton = CommandBars.FindControl _
(Type:=msoControlButton, Tag:="MonAppli" )
If Not MonBouton Is Nothing Then
MonBouton.Delete 'Supprime le bouton existant
End If
'Le bouton n'existe pas. On le crée.
Set MonBouton = Application.CommandBars("Standard" ).Controls.Add _
(Type:=msoControlButton, Before:=16, Id:=1)
ActiveSheet.Unprotect
ActiveSheet.Shapes("MonAppli" ).Select
Selection.Copy
MonBouton.PasteFace 'Mise à jour de l'image du bouton
MonBouton.Tag = "MonAppli" 'Identification du bouton
MonBouton.Caption = "Mon Application" 'Info-bulle
MonBouton.OnAction = chemin & "\InstalMonAppli.xls!lanceur" 'Action à effectuer.
Lanceur
End Sub
Sub Lanceur()
'Lancement de la routine "Init" du programme MonAppli 'ouvert en Read Only pour éviter les
‘modifications intempestives et/ou permettre une utilisation multiple éventuellement.
chemin = ThisWorkbook.Path
ChDir chemin
Workbooks.Open FileName:=chemin & "\MonAppli.xls", updatelinks:=0, ReadOnly:=True
Run "MonAppli.xls!Init"
ThisWorkbook.Close savechanges = False
End Sub
"
J'ouvre ce fichier dans Excel la première fois pour installer le bouton dans la barre d'outils Stadards d'Excel.
Les lancement suivants se feront en cliquant directement sur le bouton dans la barre d'outils Standard d'Excel.
Le passage par l'intermédiaire : "InstalMonAppli.xls!lanceur" permet de lancer l'application en ‘read only pour éviter les
modifications intempestives et/ou permettre une utilisation multiple éventuellement.