Comment lancer un programme à partir de VBA

Résolu
AnthonyCrayssac Messages postés 7 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 19 juin 2006 - 15 juin 2006 à 10:17
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013 - 8 mars 2009 à 23:34
Bonjour, je viens de créer dans une liste les fichiers d'un document (.PDF,DOC,XLS, JPG, PPT, PPS, GIF)
J'aimerai que par un double clic sur ma liste cela lance le programme adéquat. Pour cela je pense devoir faire un CASE pour chaque extention.
Qu'elle commande dois-je executer ?
Pour le moment, j'utilise Shell, mais comme l'adresse de l'appication (Word, Excel, Pait,...) n'est pas connue, comment la retrouvé en utilisant le registre.
Par exemple pour trouver l'emplacement d'Adobe Reader : HKEY_CLASSES_ROOT\AcroExch.Document\shell\open\command
et là on obtiend l'adresse.

J'espère avoir été clair, sinon, demandé moi des précisions.

L'eau ne sait pas nager, la preuve elle coule!
A voir également:

11 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
19 juin 2006 à 12:32
Effectivement, il semblerait que la commande shell ne demande que des executables.


Voilà un source qui devrait régler ton problème :


http://www.vbfrance.com/codes/SHELLANDWAIT-EXECUTER-APPLICATION-ATTENDRE-FIN-RENVOYER-SON-CODE_34867.aspx
3
AnthonyCrayssac Messages postés 7 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 19 juin 2006 1
15 juin 2006 à 17:40
Hélas cela ne fonctionne toujours pas.
J'ai quand même modifié le nom du dossier avec espace par sécurité.
Toujours la même erreur : Argument ou appel de procedure incorrect !

le code :

Private Sub LS_FichierJoint_DblClick(Cancel As Integer)
    'Lancement du fichier sélectionné
    Dim chemin As String
    chemin = "D:\BTS\Stage_Première_Année\FichiersJoints" & LS_Projets.Value & "" & LS_FichierJoint.Value
    Shell (chemin)
End Sub

PS : j'ai aussi tenté le Call Shell (chemin)

Pour cette commande, il faut lui fournir l'adresse du programme... mais comment la trouver quelque soit le pc.
Merci quand même rt15 d'éssayer de m'aider !

L'eau ne sait pas nager, la preuve elle coule!
1
AnthonyCrayssac Messages postés 7 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 19 juin 2006 1
15 juin 2006 à 10:39
J'ai oublié de précisé que je travaille sous VBA Access 2003.
C'est dommage que l'on puisse pas éditer ses messages ...

L'eau ne sait pas nager, la preuve elle coule!
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 juin 2006 à 13:14
Bonjour,


Essaye shell sur tes fichiers : windows devrait les ouvrir avec le prog adéquat.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AnthonyCrayssac Messages postés 7 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 19 juin 2006 1
15 juin 2006 à 14:03
Hélas cela ne fonctionne pas.
Voici mon code :

Private Sub LS_FichierJoint_DblClick(Cancel As Integer)
    'Lancement du fichier sélectionné
    Dim chemin As String
    chemin = "D:\BTS\Stage Première Année\FichiersJoints" & LS_Projets.Value & "" & LS_FichierJoint.Value
    Shell (chemin)
End Sub

Comment faire ??? lol

L'eau ne sait pas nager, la preuve elle coule!
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 juin 2006 à 15:56
Commence par écrire :

Call Shell(chemin)


ou


Shell chemin


J'ai fait cette erreur assez longtemps moi aussi.


Ensuite, le chemin contient des espaces, il faut donc le mettre entre guillemets doubles :

chemin = """" & "D:\BTS\Stage Première Année\FichiersJoints"
& LS_Projets.Value & "" & LS_FichierJoint.Value & """"
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
16 juin 2006 à 12:42
Bonjour,


Je plaisantais pas quand je disais que :
Shell(chemin)
Ce n'est pas du VB6 valide.

C'est faux.

Ca fait de la merde.

Ca sert à rien.

Ca plante.

Ca ne fonctionne pas.

This is not good.

Shell chemin

Ou


Call Shell(chemin)

C'est vrai que je ne suis plus sûr que shell
accepte les nom de fichier non executables.... Sinon, il faudra se
reporter sur l'API ShellExecute qui les accepte quoi qu'il arrive.
0
AnthonyCrayssac Messages postés 7 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 19 juin 2006 1
19 juin 2006 à 08:32
Avec les deux possibilités, cela ne fonctionne pas, je recherche a savoir comment lancer le programme me permettant de lire le fichier (word, ...) sans connaitre précisément l'emplacement de l'application.

L'eau ne sait pas nager, la preuve elle coule!
0
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013
5 mars 2009 à 15:00
Bonjour, je voulais savoir si anthony avait réussis à résoudre son problème?
Je suis quasiment au même point que toi. Par contre je suis open office base, j'arrive à modifier certains codes pour que ça fonctionne.
Voici le code que j'utilise:
Declare Function ShellExecuteA Lib "shell32" (ByVal hwnd As Long, ByVal LPFile As String, ByVal PathFile As String, ByVal Other As String, ByVal Other2 As String, ByVal Param As Long) As Long<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

  

                Private sub MyAppID

                MyAppID = ShellExecuteA(0, "Open", "H:\Stage\INDEXAGE\ACCESS\Fichier Exemple\100000.odt", "", "", 10)

End Sub

Il faudrait que le "100000.odt" puisse être remplacé par le contenu d'une TextBox de mon Formulaire. J'ai essayé en déclarant la TextBox mais ça ne fonctionne pas, ainsi que avec le symbole &.

Merci de votre aide
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
5 mars 2009 à 16:29
Salut,

Pose ta question dans un nouveau thread, et précise bien que tu travailles en OooBasic (Si c'est le cas bien sûr).

Ton problème est plus lié à OooBasic et la gestion de ces TextBox qu'à un lancement d'application.

A tout hasard, tu as essayé :

MaTextBox.Text

?
0
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013
8 mars 2009 à 23:34
J'ai ouvert un nouveau sujet de discutions
http://www.vbfrance.com/forum/sujet-LIAISON-ENTRE-OPEN-OFFICE-BASE-AUTOCAD_1280204.aspx

Je crois que MaTextBox.Text ça ne marche pas non plus mais je l'est peut-être pas écrit au bon endroit.
0
Rejoignez-nous