Problème ouverture d'un fichier

[Résolu]
Signaler
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010
-
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010
-
Bonjour,


Je n'arrive pas à lancer un fichier (extension indifférente) avec ma variable "fich" par contre si je remplace dans le shellexecute ma variable par le chemin de mon fichier cela fonction, auriez vous une idée
Merci


[CODE]
Dim fich As Variant
  Feuil1.Activate
  Cel.Activate
ActiveCell.Offset(0, 1).Select
fich = ActiveCell.Value


'Mon problème ci dessous
ShellExecute 0, "open", fich, "", "", SW_SHOWNORMAL
Exit Sub[CODE]

18 réponses

Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010

J'ai un peu évolué dans mon problème en ouvrant facilement un .Txt


par contre j ai trouvé qu on pouvait utiliser ceci pour ouvrir un pdf


ShellExecute Me.hwnd, vbNullString, CheminDeAcrobat.exe, ChemindetonFichierPDF "C:", SW_SHOWNORMAL


Mais moi j ai plusieurs documents avec des extensions différentes, n-y a t il pas un moyen d'ouvrir toutes les appli en une commande?
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
est ce que ta cellule contient le chemin complet du fichier à ouvrir ?
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010

Voila ce que contient ma cellule

C:\Documents and Settings\jdrecq\My Documents\COMPOSANTS OU DOCUMENTS NON RELACHES.pdf

et je pointe bien dessus mais ne se passe...
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
SI tu fais ceci simplement est ce que cela fonctionne?

Dim fich As String
fich = "C:\Documents and Settings\jdrecq\My Documents\COMPOSANTS OU DOCUMENTS NON RELACHES.pdf"
ShellExecute 0, "open", fich, "", "", SW_SHOWNORMAL
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010

Merci pour ta réponse, mais le problème c'est que mon chemin se trouve parmi une multitude d autres chemin, donc il faut que je fonctionne en variable
Voici mon code complet

Sub Macro_Recherche()
Dim Str_Plage As String
Dim Cel As Range
Dim Feuil As Worksheet
Dim Str_critère As String
Dim X As Byte


 
Str_Plage = "B:B"
Str_critère = InputBox("Article à rechercher ?")
For Each Feuil In Sheets
For Each Cel In Feuil.Range(Str_Plage)
If UCase(Cel) Like "*" & UCase(Str_critère) & "*" Then
 
Feuil.Activate
Cel.Activate
 
X = MsgBox("Mot """ & Str_critère & """ trouvé :" & Chr(13) & _
"Sur la feuille : " & Feuil.Name & Chr(13) & _
"à la cellule : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
"Oui : Lancer fichier" & Chr(13) & _
"Non : on continue la recherche " & Chr(13), vbDefaultButton2 + _
vbQuestion + vbYesNo, "MOT TROUVÉ")
Select Case X
Case 6


Dim fich As Variant


 
  Feuil1.Activate
  Cel.Activate
  '  ActiveCell.Offset(0, 1).Select
'Fich = ActiveCell
ActiveCell.Offset(0, 1).Select
fich = ActiveCell.Value


'ShellExecute 0, vbNullString, fich, vbNullString, vbNullString, vbNormalFocus
'ShellExecute 0, "open", fich, "", "", 1
ShellExecute 0, "open", fich, "", "", SW_SHOWNORMAL
    Exit Sub


Case 2 'annuler on sort
    Exit Sub
Case Else 'Non=7
'on fait rien, mais on pourrait
End Select
End If
Next Cel
Next Feuil
MsgBox ("pas trouvé")
End Sub
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
oui je me doute qu'il faut que tu fonctionnes en varaibles, mais j'esaie de faire par élimination.

Si le code que je te propose marche, c'est que la valeur de la cellule n'est pas excatement égale à ce que tu crois (peu etre des espaces parasites)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Ca ne serait pas parce que ta cellule ne contient pas les guillemets.

Si pour que ca fonctionne il faut "C:\machin.pdf"
Dans ta cellule je pense que ca ne fonctionnera pas si tu a machin.pdf.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
>[auteur/FAUCHEUSE/1265966.aspx faucheuse]: non il ne faut PAS les guillemets justement

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
"...il ne faut PAS les guillemets justement..."

Ben si le chemin du fichier contient des espaces, il y a des chance qu'il faille justement l'encadrer de guillemets pour que le système le reconnaisse en entier. Sinon il va s'arreter au premier espace

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
A vérifier aussi si le nom du fichier ne contient pas une apostrophe en premier caractère. Ce qui est souvnet le cas sous Excel pour que le contenu d'une celulle soit considéré comme une string.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Faudrait que tu lance ta macro en mode debugage (c'est a dire avec un point d'arret, a la premiere ligne c'est mieux) et lorsque tu a passer la ligne
fich = ...

tu passe ta souris sur fich, comme ca tu sera fixé de ce que contient la variable.
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010

Bonjour et merci pour vos réponses...
J'ai essayé avec les guillements ça ne répond pas, le chemin ne comporte aucune apostrophe.

J'ai lancé le mode débuggage, et lorsque que je passe la souris sur ma variable fich il m'indique que celle ci est égale à "" c'est à dire à rien pourtant la cellule active comporte bien une valeur
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Dans ce cas essaie peu être de remplacer .Value par .Text

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010

J'ai réessayé avec text et ma variable fich comporte bien le contenu de ma cellule, mais toujours rien ne s'ouvre

Je pense que je ne dois pas bien utiliser la commande ci dessous
ShellExecute 0, "open", fich, "", "", SW_SHOWNORMAL
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Maintenant que tu retrouves bien un "chemin", verifie que celui ci est bien valide et qu'il ne possède pas des espaces ou des caractere parasites.

Autre idee voit ce que te retourne Dir(fich)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010

Non le chemin est nickel, car avant d'utiliser une variable j'avais indiqué le chemin complet dans le shellexecute, et cela m'ouvrait correctement le fichier

Sinon coté test Dir(fich) m affiche une erreur "nom ou numéro de fichier incorrect"

Merci de ton aide
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
OU la, sombre problème.
Je ne sais pas si cela va t'aider mais ceci fonctionne

Private 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

Private Sub CommandButton1_Click()

Dim Fich As String
Feuil1.Select
Fich = Range("A1").Text 'Contient C:\Test Loader\Test.pdf

If Dir(Fich) <> vbNullString Then
   Call ShellExecute(0, "open", Fich, "", "", SW_SHOWMAXIMIZED)
End If

End Sub<hr />
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
46
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
8 février 2010

Merci, mais le problème c'est que dans mon programme la variable change tout le temps suivant une requête donc je ne peux pas dire que A1 est égale a un chemin spécifique,
merci quand même