Comment intégrer une donnée dans une commande

Fermé
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010 - 4 janv. 2010 à 10:27
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010 - 5 janv. 2010 à 17:01
Bonjour,

J'ai besoin de votre aide car j'ai crée une ListBox qui récupère des données dans un tableau Excel.
Par exemple donnée 1 c'est un plan appelé: Plan1

Ensuite j'aimerai ouvrir ce plan au format pdf sachant qu'il existe sous D: sous le même nom.
Ex: D:\Plan1.pdf

Mon problème est que ma ListBox est composée de plusieurs données identique à cet exemple j'aimerai trouver une formule "passe partout" telle que:

FileName=ListBox1.Selected
Shell("C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe", 1)
Shell("D:\FileName")

Mais cela ne fonctionne pas, je suis débutant et je bloque.... Merci par avance pour votre aide.
A voir également:

17 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 10:50
Bonjour,

1/
Filename est un nom réservé par VBA (propriété de l'objet fileSearch)

nomdufichier=Shell("C:\ProgramFiles\Adobe\....etc
pas d'espaces dans une fonction shell
2/ essaies:
Shell("D:\" & nomdufichier)
3/ pas sûr (...) que shell soit la bonne fonction dans cette dernière instruction
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
4 janv. 2010 à 11:06
Re,

Le problème c'est que j'ai plus d'une 30ène de fichier et je voudrais éviter une ligne de commande pour chaque d'ou l'idée d'une fonction commune appelée: FileName.

A ce stade de ma programmation, quand je selectionnne dans ma ListBox et que je valide (via un bouton), j'ouvre le AcrobatReader mais pas mon fichier...

J'ai essayé avec Shell("D:\" & FileName) mais ca ne marche pas.
Je te joins ma ligne de commande.

Private Sub nomdufichier()
Dim nomdufichier As String
nomdufichier = ListBox1.Selected
End Sub

Private Sub CommandButton8_Click()
Dim nomdufichier As Long
nomdufichier = Shell("C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe", 1)
Shell ("D:\" & nomdufichier)
End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 11:22
re

merci de mettre tes codes en utilisant la balise "code" (4° bouton à gauche)

tu déclares 2 fois nomdufichier qui + est , 1 fois "string" puis 1 fois en "long"!

"nomdufichier" est une variable globale car étant utilisée dans 2 procédures et donc, doit être déclarée au dessus de toutes les subs de ta page de code de ton usf
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
4 janv. 2010 à 11:36
Ok alors j'ai réctifier mais ca ne marche toujours pas, j'ai :

Dim Nomdufichier As String


Private Sub Nomfichier()

Nomdufichier = ListBox1.Selected

End Sub


Private Sub CommandButton8_Click()

Nomdufichier = Shell("C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe", 1)

Shell ("D:\" & Nomdufichier)

End Sub


J'ai une erreur sur la ligne
Shell ("D:\" & Nomdufichier)
                
0

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 13:51
re, excuses moi, mais des trucs à faire

comme je n'aime pas du tout "shell" j'ai fouillé dans mon grenier où j'ai trouvé une méthode par les API (ce n'est pas de moi, qui? je ne sais plus, 1000 excuses à l'auteur)

Dans un module VBA
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  (ByVal hwnd As Long, ByVal lpOperation As String, _
  ByVal lpFile As String, ByVal lpParameters As String, _
  ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long



et dans ton code userform
Private Sub CommandButton8_Click() 
ShellExecute 0, "open", nomdufichier, "", "", 0
end sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 14:29
ci jint demo très basique
https://www.cjoint.com/?beoDdVtOhu
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
4 janv. 2010 à 14:57
J'ai essayé ce que tu m'as envoyé... Je n'ai pas de message d'erreur mais rien ne se passe et rien ne s'ouvre je suis désolé...

Pour le lien que tu m'as envoyé ne s'execute pas non plus j'ai erreur '424' !! Peut etre est-ce une erreur de config de mon PC ?

Je sent que nous nous approchons du but.... je continue à chercher. Si tu as une autre idée ou suggestion je suis toujoours OK.

Merci.

Peut-être veux tu une copie de mon prog...?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 15:30
Pour la démo, je n'avais pas sauvegardé :-#
https://www.cjoint.com/?bepBrWClkl
nota il faut la télécharger et non l'ouvrir directement. les 2 fichiers classeur1 et enfer.pdf doivent être dans le m^me dossier.
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
4 janv. 2010 à 15:45
J'ai mis les deux fichiers dans le même dossier .... Il se passe la même chose que sur mon programme.
C-A-D que rien ne se passe !! Pas d'ouverture de pdf...??
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 16:08
Je viens de re-réessayer...
Curieux, chez moi ca marche...
essaies peut-^tre avec
load userform1 au lieu de userform1.show

tu as bien mis l'API (public declare....) dans un module et non en tête de ton code d'userform ?
0
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 31
4 janv. 2010 à 16:34
bonjour ,
est-ce que cela ne pourrait pas fonctionner comme cela ?
    Fichier = D:\ & listbox1.value
    ThisWorkbook.FollowHyperlink (Fichier)
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
4 janv. 2010 à 17:24
Slt ta ligne de commande ne fonctionne pas non plus...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 17:16
Si, tout à fait mais tu as un message d'avertissement de Windows
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
4 janv. 2010 à 17:24
Je n'ai pas de message d'avertissement de Windows
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
4 janv. 2010 à 17:31
J'ai testé avec:

Shell("C:\Program Files\Adobe\Acrobat 7.0\...\ + D:\" & Nomdufichier), "", "", SW_SHOWNORMAL


Cela ouvre Acrobat Reader mais un message me dit que le chemin et introuvable puis adresse non valide !!??

Désolé mais la je suis perdu ! Je ne sais plus quoi tenter... Mais je ne desepère pas on va y arriver
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 janv. 2010 à 17:36
Pourquoi ne prend tu pas la solution proposée par poupouille? c'est ce message chez moi (XL2003) qui m'avait fait abandonné cette solution

0
pou pouille Messages postés 207 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 20 juillet 2012 31
5 janv. 2010 à 10:43
re bonjour, chez moi je n'ai pas de message cela proviens surement de ma configuration. dans mon code j'avais oublier les " " il me semble ^^
Fichier = "D:\" & listbox1.value
ThisWorkbook.FollowHyperlink (Fichier)
0
OlivierA68 Messages postés 9 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 5 janvier 2010
5 janv. 2010 à 17:01
SUPERRRRRRRRRR ça marche....

Merci beaucoup, vous m'enlevez une grosse épine du pied...

A charge de revanche

a+
0