Comment intégrer une donnée dans une commande

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.
Configuration: Windows 2000 Internet Explorer 6.0

17 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    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
    1. 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
      1. Contributeur
        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
        1. 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)
          1. Contributeur
            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
            1. 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...?
              1. 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...??
                1. Contributeur
                  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 ?
                  1. bonjour ,
                    est-ce que cela ne pourrait pas fonctionner comme cela ?
                        Fichier = D:\ & listbox1.value
                        ThisWorkbook.FollowHyperlink (Fichier)
                    
                    1. Slt ta ligne de commande ne fonctionne pas non plus...
                  2. Contributeur
                    Si, tout à fait mais tu as un message d'avertissement de Windows
                    1. 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
                      1. Contributeur
                        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

                        1. 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)
                          
                          1. SUPERRRRRRRRRR ça marche....

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

                            A charge de revanche

                            a+