Bonjour,
Je voudrais ouvrir un fichier pdf.
Alors j'explique. Je l'avais fait avec excel et en fait je préfère utiliser des fiches pdf.
Toutes les fiches sont dans un répertoire D:.....\Fiches Matières
Voilà ce que j'ai programmé:
Dim i As Variant
Dim nuance As String
i = 0
For i = 0 To 20
If UsfRésultats.ListBox2.Selected(i) = True Then
nuance = UsfRésultats.ListBox2.List(i)
Shell "C:\Program Files\...\AcroRd32.exe" + " " + "D:\...\Fiches Matières\nuance.pdf"
Exit For
End If
Next i
Donc en fait, "nuance" change en fonction de ce que l'utilisateur choisi. C'est une chaine de caractère et elle correspond aux noms de mes pdf.
Je voudrais donc que la fiche nuance.pdf s'ouvre.
Alors quand je mets un fichier pdf précis ça marche mais quand je mets la variable "nuance", acrobate s'ouvre mais me dit que le fichier est introuvable.
Pourquoi
Si vous pouvez m'aider...
Merci!
Heuu je n'ai pas cette erreur chez moi essaye de mettre un public devant la déclaration du ShellExecute.
Lors de l'appel tu peux essayer aussi en mettant ShellExecute 0, "open", Fichier, vbNullString, Chemin, 1
Avant l'appel à la fonction tu peux également faire un MsgBox de la variable fichier pour vérifier que tu récupères un chaîne correcte..
J'ai mis:
Shell ("C:\Program Files\...\AcroRd32.exe" + " " + "D:\....\Fiches Matières\&nuance&.pdf")
et ça marche toujours pas!! ca me mrque toujours la meme erreur! et si je mets
Shell ("C:\Program Files\...\AcroRd32.exe" + " " + "D:\....\Fiches Matières"&nuance&".pdf")
ca me le prend pas!
Sinon tu peux utiliser la fonction shellexecute qui a l'avantage de ne pas être obligé de connaître le chemin d'acrobat reader :
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
Dim nuance As String, Fichier As String
Chemin="C:\monpath"
nuance = "tondoc.pdf"
Fichier = Chemin & nuance
Voilà!!! ayéé!!! j'ai trouvé la solution.
Dim i As Variant
Dim nuance As String
programme = "C:\Program Files...\AcroRd32.exe"
dossier = "D:\...\Fiches Matières"
i = 0
For i = 0 To 20
If UsfRésultats.ListBox2.Selected(i) = True Then
nuance = UsfRésultats.ListBox2.List(i)
Shell (programme + " " + dossier + nuance + ".pdf")
Exit For
End If
Next i
Merci de votre aide. Meme si j'ai pas fait exactement pareil ça m'a bien aidé!
Oui, il faut faire la déclaration dans un module comme ceci :
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 le code tu appelles ensuite ta fonction avec les différentes chaînes initialisées :
Dim nuance As String, Fichier As String
Chemin="C:\monpath"
nuance = "tondoc.pdf"
Fichier = Chemin & nuance
Donc dans module 1 j'ai mis
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
dans mon code j'ai mis:
Dim nuance As String, Fichier As String
Chemin = "D:\...\Fiches Matières"
nuance = "100Cr6.pdf"
Fichier = Chemin & nuance