Ouvrir pdf en fonction d'un mot

Bonjour,

Ici mon code fonctionne il m'ouvre le PDF si il contient ce qui se trouve dans la cellule.

mais je voudrais qu'il ouvre le fichier si ce n'est qu'une partie du lien par exemple si dans ma cellule se trouve 'test' et que le fichier se nomme 54512_test_rep_5454.pdf faudrait que cela fonctionne aussi.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Siret As String
Dim CheminDOc As String

CheminDOc = "C:\Users\rinal\Documents\re"

Siret = Target

If Siret <> "" Then
  Shell "C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe " & CheminDOc & "\" & Siret & ".pdf"
 Else
  MsgBox " La cellule est vide, veuillez double cliquer sur une autre cellule"
End If
End Sub

Bonjour

Si j'ai bien compris, il suffit d'utiliser la fonction DIR()

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim CheminDOc As String, sNomFic As String
  If Target.Value = "" Then
    MsgBox " La cellule est vide, veuillez double cliquer sur une autre cellule"
    Exit Sub
  End If
  ' Chemin
  CheminDOc = "C:\Users\rinal\Documents\re\"
  ' Trouver le nom du fichier en entier
  sNomFic = Dir(CheminDOc & "*" & Target.Value & "*")
  '
  If sNomFic <> "" Then
    Shell "C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe " & CheminDOc & sNomFic
   Else
    MsgBox "Impossible de trouver un fichier contenant :" & Target.Value
  End If
End Sub

@+

Tu peux utiliser l'instruction :

If InStr(Siret, "test") > 0 Then Siret = Target"

Cela dit, ce code ne marchera que si Acrobat Reader est installé dans :

"C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe "

S'il est installé ailleurs tu l'auras dans le baba. Mieux vaut laisser à l'OS le soin de décider. Chez moi le path est :

"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\Acrobat.exe "

Bonjour Optimix

En faite 'test' va être variable en fonction de ce u a dans ma cellule

Bonjour BrunoM45,

Non ce la ne fonctionne pas, il dit a chaque fois que le fichier existe pas

Bonjour à tous,

Voici un essai qui ouvrira, le cas échéant, seulement la première correspondance :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim CheminDOc As String, sNomFic As String
CheminDOc = "C:\Users\rinal\Documents\re\"
sNomFic = Dir(CheminDOc & "*" & Target.Value & "*.pdf")
If sNomFic <> "" Then
    Shell "C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe " & CheminDOc & sNomFic
Else
    MsgBox "Impossible de trouver un fichier contenant :" & Target.Value
End If
End Sub

Cdlt,

Bonjour optimix,

J'ai adapter et oui cela fonctionne mais ca ouvre mon fichier si la valeur est exact moi cela doit être 'si contient' par exemple mon fichier test_145 dois pouvoir être ouvert par 'test'

Merci 3GB tu es vraiment trop fort. Je voulais juste savoir si c'étais possible d'aller vérifier le fichier dans 6 dossiers différent ?

!!! Oui, c'est possible mais il faut connaitre les chemins. Est-ce que ces dossiers se trouvent tous dans Documents ?

Oui pour l'exemple dans re tu as 100 dossiers dont 6 ou se trouve mes pdf

Re,

Voici un essai, avec les 100 dossiers faute d'infos précises concernant les 6 dossiers à cibler :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
cancel = true
Dim rep$, motcle$
rep = "C:\Users\rinal\Documents\re\" 'repertoire parent
motcle = target.value 'mot à chercher
ChercherOuvrirFichier rep, motcle
End Sub

function ChercherOuvrirFichier(Rep$, Motcle$)

dim n&, t(), i&, fichier$, dossier$

if motcle = "" then exit sub

if dir(left(rep, len(rep) - 1), vbdirectory) = "" then
    msgbox "chemin inexistant", 16: exit function
end if

dossier = dir(rep, vbdirectory)
while dossier <> ""
    if not dossier like "*.*" then
        n = n + 1: redim preserve t(1 to n)
        t(n) = rep & dossier & "\"
    end if
    dossier = dir
wend

if n = 0 then msgbox "aucun dossier trouvé", 16: exit function

for i = lbound(t) to ubound(t)
    fichier = dir(t(i) & "*" & motcle & "*.pdf")
    if fichier <> "" then
        Shell "C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe " & t(i) & fichier
        exit function
    end if
next i

fin:
MsgBox "Impossible de trouver un fichier contenant :" & motcle
       
end function

Cdlt,

merci je vais essayer mais pour exemple :

- re\Commercial 2019 sdsd

- re\Commercial 2020 sdsd erer

- re\Commercial 2021 sdsdee

ta variable t n'est pas definie

Si mes calculs sont bons il n'y a que 3 exemples là . Donc ce sont les dossiers de type "Commercial AAAA sdsd*" ? Mais essaie déjà avec le code que j'ai posté. Elle va parcourir tous les sous-dossiers mais si aucun fichier correspondant n'y est trouvé, ça n'a pas d'incidence (c'est assez rapide).

Je viens de modifier le code pour y déclarer les variables...

Non cela fait crash excel

Si ma cellule est vide il m'ouvre le premier fichier qu'il trouve

J'ai édité le code à nouveau pour la cellule vide.

Ca fait crasher Excel ? Très étonnant, j'ai déjà travaillé sur bien plus que 100 dossiers sans qu'Excel n'ait de problème.

Je pense que c 'est un problème dans le code parce que mon pc est puissant

Lol puissant !

Oui, j'ai oublié une petite ligne qui fait la différence (désolé, je n'ai pas testé). Ca créait une boucle infinie. Normalement, ça devrait être mieux maintenant (je l'espère) !

Rechercher des sujets similaires à "ouvrir pdf fonction mot"