Comment lancer un programme à partir de VBA [Résolu]

Messages postés
7
Date d'inscription
jeudi 15 juin 2006
Dernière intervention
19 juin 2006
- - Dernière réponse : Ancestroplaced
Messages postés
10
Date d'inscription
vendredi 20 février 2009
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!
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_rt15
Messages postés
7
Date d'inscription
jeudi 15 juin 2006
Dernière intervention
19 juin 2006
1
Merci
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!
Commenter la réponse de AnthonyCrayssac
Messages postés
7
Date d'inscription
jeudi 15 juin 2006
Dernière intervention
19 juin 2006
0
Merci
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!
Commenter la réponse de AnthonyCrayssac
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
0
Merci
Bonjour,


Essaye shell sur tes fichiers : windows devrait les ouvrir avec le prog adéquat.
Commenter la réponse de cs_rt15
Messages postés
7
Date d'inscription
jeudi 15 juin 2006
Dernière intervention
19 juin 2006
0
Merci
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!
Commenter la réponse de AnthonyCrayssac
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
0
Merci
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 & """"
Commenter la réponse de cs_rt15
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
0
Merci
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.
Commenter la réponse de cs_rt15
Messages postés
7
Date d'inscription
jeudi 15 juin 2006
Dernière intervention
19 juin 2006
0
Merci
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!
Commenter la réponse de AnthonyCrayssac
Messages postés
10
Date d'inscription
vendredi 20 février 2009
Dernière intervention
3 octobre 2013
0
Merci
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
Commenter la réponse de Ancestroplaced
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
0
Merci
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

?
Commenter la réponse de cs_rt15
Messages postés
10
Date d'inscription
vendredi 20 février 2009
Dernière intervention
3 octobre 2013
0
Merci
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.
Commenter la réponse de Ancestroplaced

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.