Lancer un executable à partir d'un bouton

O

olivier

Guest
Bonjour,

je pense que cette question a déjà été posée mais je ne l'ai pas trouvé dans la liste...

Est-il possible de lancer un programme extérieur à Excel du style monprogramme.exe en cliquant sur un bouton ?
Quelle est l'instruction Excel ou VBA qui convient ?


Merci
Olivier
 
G

Gérard

Guest
Bonjour Olivier et le forum

associe dette procédure un un bouton

Sub NotePadSysteme()
On Error GoTo Erreur
Status = Shell("notepad.exe", 1)
Exit Sub
Erreur:
MsgBox "Désolé, je ne peux pas trouver le bloc-notes." & vbNewLine _
& "Assurez-vous que vous avez installer le Bloc-notes de Windows." _
, vbExclamation
End Sub

@+Gérard
 
@

@+Thierry

Guest
Bonjour Didier, Gérard, STéphane, Olivier et le Forum

Non Didier ce n'est pas une mauvaise méthode, c'est une méthode surtout efficace pour ouvrir un fichier déjà sauvé en .txt, on peut également ouvrir le .exe depuis un Hyperlink, mais contrairement à la macro de Gérard, ouvrir un Exécutable avec un Hyperlink déclenchera le message d'alerte de MS Office qu'un exécutable peut-être dangereux.

Donc on réservera l'hyperlink pour accéder à des fichiers (.doc, .txt, .pdf... etc) Et la macro "Shell" pour les .Exe et en plus on peut spécifier le style de fenêtre : "1" pour Focus et Taille Original de l'éxécutable, "6" Excel garde le Focus et l'exécutable est mis en Icone... (Voir l'aide pour les autre possibilités)

Voilà la nuance Didier

Pour Olivier et Gérard et ceux qui voudraient utilisé la Macro "as it si"
Une petite précision avec Shell, si l'exécutable est en dehors du répertoire Windows (ou WinNt), il faut préciser le path complet :
Exemple :
Status = Shell("C:\Program Files\Adobe\Acrobat 5.0\Acrobat\Acrobat.exe", 1)

Un dernier détail qui m'a posé soucis, si l'on a besoin de lancer un programme exécutable pour récupérer des données dans Excel (Exemple "Data Select")... Ne pas oublier que, par défaut, la fonction de Shell dirige d'autres programmes d'une manière asynchrone. Par conséquent un programme lancé par Shell peut ne pas avoir fini son ouverture alors que les déclarations après la fonction de Shell sont exécutées (sbinz !!!). Dans le cas de "Data Select" ou équivalent, il est souhaitable de lancer un timer après Shell puis de poursuivre la routine avec des instructions DDEInitiate/DDEExecute... par exemple...

Voilà en complément d'info sur ce Shell qui n'a rien a voir avec Total ni BP!!
:)

Bon App
@+Thierry
 
G

Gérard

Guest
@+Thierry d'après ta remarque, alors je pense que la procédure en exemple ci-dessous fait aussi du bon boulot qu'en pense tu merci de tes commentaires.


'Le système d'exploitation Windows 98 fournit une commande
'"Start" qui peut être utilisée comme argument pour la
'fonction "Shell". Cette commande est une chaîne de caractères
'littérale qui démarre une application Windows à partir d'une
'fenêtre "DOS". en utilisant la commande "Start", vous devez
'indiquer le nom d'un fichier "Exécutable". Le programme associé
'à l'extension de ce fichier document est exécuté et le fichier
'est automatiquement chargé. Par exemple, les instructions suivantes
'démarrent l'application "WORDPAD.EXE" associée à l'extension .txt
'et charge le document "TXT" nommé Win32api.txt.
'--------------------------------------------------------------------
Sub ChargeWordPad()
'L'argument Win32api.txt doit se trouver dans le même répertoire que
'l'application, la commande s'exécute normalement et elle est active.
'Les lignes ci-dessous exécute la Commande.
'--------------------------------------------------------------------
On Error Resume Next
ValeurDeRetour = "D:\CesmesfichierExcel\VBGenereCal\Win32Api.txt"
' ValeurDeRetour = "C:\VBGenereCal\WIN32API.TXT"
Shell ("Start WORDPAD.EXE " & ValeurDeRetour)
End Sub
 

Discussions similaires

Réponses
13
Affichages
327
  • Question
Microsoft 365 Tableau
Réponses
24
Affichages
685

Statistiques des forums

Discussions
314 654
Messages
2 111 598
Membres
111 215
dernier inscrit
fateh