Suivant un numéro récupérer un PDF dans un classeur

Bonjour,

Je souhaite récupérer un devis en Pdf.

J'ai un numéro 11202010180.

11 correspond au mois de novembre.

2020 à l'année.

1 correspond à devis.

0180 au compteur numéro du devis qui s'incrémente automatiquement au fur et à mesure des devis.

Ce PDF est enregistré de la façon suivante : DUPONT D 11202010180. Nom du client (un espace) D pour devis (un espace) et le numéro.

Ce PDF est enregistré dans le classeur DEVIS. Ce classeur contient les douze mois de l'année. Pour l'exemple ci-dessus le chemin est:

C:\Users\Acer\Desktop\SEBASTIEN\DEVIS\NOVEMBRE

Ce que je souhaiterais c'est par une fonction commençant par

Dim nom$, a As Range
1 nom = InputBox("SAISIR LE NUMERO DU CLIENT")

et en tapant D 11202010180 cela m'ouvre ce PDF. ( SI POSSIBLE SANS LE NOM DU CLIENT)

J'ai le même principe de fonctionnement pour les factures sauf qu'à la place de 1, c'est un 2 pour les numéros, et pour l'enregistrement du PDF au lieu que ce soit un D, c'est un F pour facture.

11202020123

DUPONT F 11202020123

Ce PDF est enregistré dans le classeur FACTURE. Ce classeur contient les douze mois de l'année. Pour l'exemple ci-dessus le chemin est:

C:\Users\Acer\Desktop\SEBASTIEN\FACTURE\NOVEMBRE

J'ai le même principe de fonctionnement pour les réceptions de chantier qui reprend le n° de facture, et pour l'enregistrement du PDF au lieu que ce soit un D, ou un F c'est un R pour réception.

R 1120200123

DUPONT R 11202020123

Ce PDF est enregistré dans le classeur FIN DE TRAVAUX. Ce classeur contient les douze mois de l'année. Pour l'exemple ci-dessus le chemin est:

C:\Users\Acer\Desktop\SEBASTIEN\FIN DE TRAVAUX\NOVEMBRE

Pour être plus clair je met deux ou trois exemples: en tapant dans l'inputbox

R 0620200437 cela m'ouvre la feuille de réception de travaux du client dans le chemin C:\Users\Acer\Desktop\SEBASTIEN\FIN DE TRAVAUX\JUIN

F 03202020093 cela m'ouvre la feuille facture du client dans le chemin C:\Users\Acer\Desktop\SEBASTIEN\FACTURE\MARS

D 08202010312 cela m'ouvre la feuille devis du client dans le chemin C:\Users\Acer\Desktop\SEBASTIEN\DEVIS\AOÛT

En espérant avoir été assez clair

En vous remerciant si vous pouvez m'aider.

Bonne réception.

Bien cordialement.


Bonjour,

Et pourquoi ne pas taper le code cherché dans la barre de recherche de l'explorateur Windows, qui est là précisément pour ça ?

Bonjour,

J'ai essayé, mais je part avec un numéro (par exemple) 11202010180 dans un classeur et, je recherche DUPONT D 11202010180 dans un autre classeur.

Faire par rechercher et sélectionner, ne fonctionne pas.

Salut Bejouette, Salut JoyeuxNoel,

J'ai répondu à un sujet assez proche ici :https://forum.excel-pratique.com/excel/ouvrir-un-pdf-stocke-sur-serveur-suivant-maitre-mot-inscrit-d...

Il faudra quand même adapter à ton contexte.

Au passage, il n'est pas nécessaire d'avoir 12 dossiers mensuels puisque tu as les mois qui figurent dans les noms de fichier. D'ailleurs, il serait préférable d'avoir l'année avant le mois, soit 20201110180 à la place de 11202010180 par exemple.

Cdlt,

Bonsoir 3GB

En te remerciant.

Je vais regarder cela.

Bonne soirée à tous les deux et en vous remerciant.

Bonjour 3GB

Merci pour l'info mais trop complexe pour moi.

Merci encore

Bonne réception.

Bien cordialement

Bonjour bejouette et le forum,

un exemple à tester, peut-être un peu plus facile à comprendre (attention aux accents dans le nom des mois)

Sub test()
    'https://forum.excel-pratique.com/excel/suivant-un-numero-recuperer-un-pdf-dans-un-classeur-162199

    Dim Chemin As String
    Dim TypeDocument As String, strExt As String, Mois As String
    Dim Code As Variant, strFilename As String

    Chemin = "C:\Users\Acer\Desktop\SEBASTIEN\"
    strExt = ".PDF"

    Code = Application.InputBox("Entrer le code", Title:="CODE")

    If Code = False Or Code = "" Then
        Exit Sub
    End If

    TypeDocument = Mid(Code, 7, 1) ' septième caractère du code
    Mois = Left(Code, 2) 'les deux premiers caractères du code

    Select Case TypeDocument
        Case "1": TypeDocument = "DEVIS\"
         Case "2": TypeDocument = "FACTURE\"
        Case "0": TypeDocument = "FIN DE TRAVAUX\"
    End Select

    Select Case Mois
        Case "01": Mois = "JANVIER\"
         Case "02": Mois = "FÉVRIER\"
          Case "03": Mois = "MARS\"
           Case "04": Mois = "AVRIL\"
            Case "05": Mois = "MAI\"
             Case "06": Mois = "JUIN\"
            Case "07": Mois = "JUILLET\"
           Case "08": Mois = "AOÛT\"
          Case "09": Mois = "SEPTEMBRE\"
         Case "10": Mois = "OCTOBRE\"
        Case "11": Mois = "NOVEMBRE\"
       Case "12": Mois = "DÉCEMBRE\"
    End Select

    strFilename = Dir(Chemin & TypeDocument & Mois & "*" & Code & strExt)
    If strFilename <> "" Then
        openAnyFile Chemin & TypeDocument & Mois & strFilename
    End If

End Sub

Function openAnyFile(strPath As String)
    'https://stackoverflow.com/questions/53312167/how-to-open-a-pdf-file-with-wild-card-option-via-excel-macro

    Dim objShell As Object
    Set objShell = CreateObject("Shell.Application")
    objShell.Open (strPath)
End Function

Cordialement

Bonjour,

Mois = ucase(format(Left(Code, 2), "mmmm")) & "\" 

Non testé, mais ceci devrait remplacer tout le select case mois.

Bonjour Sequoyah, bonjour Joyeux Noel.

En vous remerciant de vous être intéresse à ma demande.

Pour l'instant , je viens de tester la fonction de Sequoyah.

J'ai copier votre fonction tel qu'elle dans un bouton.

En entrant, dans la message box le numéro (pour exemple mais qui existe) D 10202010120, et en effectuant pas à pas, la macro s'arrête à end sub et revient au départ sans que rien ne se passe.

J'ai supprimé l'espace (reste donc que D10202010120) la macro s'arrête à end sub et revient au départ sans que rien ne se passe.

J'ai fait les deux solutions ci-dessus avec un D en minuscule et la macro s'arrête à end sub et revient au départ sans que rien ne se passe.

J'ai supprimé le D et l'espace (reste donc que 10202010120) et la macro s'effectue en totalité en passant

Function openAnyFile(strPath As String)

et va jusqu'à la fin et ouvre le DEVIS correspondant à ce numéro.

Ce qui fait que je n'ai pas la sélection sur F Facture ou R Réception chantier. Sur devis, je l'ai indirectement.

En vous souhaitant bonne réception.

Bien cordialement.

Bonjour le fil et le forum,

il suffit de taper la partie numérique du code, le mois est donné par les deux premiers caractères et le type de document par le septième caractère (1 pour Devis, 2 pour Facture, 0 pour FIN DE TRAVAUX - en supposant que dans ce cas le septième caractère du code est toujours 0.

La solution de JoyeuxNoel est intéressante mais est liée à la langue du système Windows de l'utilisateur, n’ayant pas la version française chez moi ne marche pas.

Cordialement

Re,

Ça ne fonctionne pas chez moi non plus en fait. Ça met toujours janvier. Je n'arrive pas à trouver ce qui foire pour le moment.

Je ne pense vraiment pas que ce soit lié aux paramètres régionaux, sauf si je loupe quelque chose.

edit :

mois = UCase(Format(DateSerial(Year(Date), Left(code, 2), Day(Date)), "mmmm")) & "\"

ça fonctionne chez moi.

Re bonjour Sequoyah

Je pensais qu'il fallait entrer le D ou F ou R pour avoir le chemin pour accéder au PDF.

Lorsque j'ai monté mes fichiers mon N° de devis change à chaque devis et pour m'y retrouver je met un 1 précéder d'un D pour devis.

Pareil pour une facture sauf que le septième chiffre est un 2 pour facture précéder d'un F.

Quant à ma feuille Réception de travaux, je reprend le même N° de facture précédé d'un R.

Je vais tout simplement mettre un 3 en septième chiffre pour mes réceptions de travaux et changer dans ta fonction le case zéro en case 3 et cela devrait fonctionner.

En tout cas un grand merci pour ce que tu m'as réalisé. Mon attente par rapport à ma demande est parfaitement comblée. C'est exactement ce que je voulais. On ne pouvait pas faire mieux.

Encore MERCI

Quant Joyeux Noel, j'ai essayé mais cela ne fonctionne pas. En effectuant pas à pas, elle s'arrête à end sub et remonte au départ. Ne passe pas sur

Function openAnyFile(strPath As String)

En tout cas MERCI à toi aussi.

Bien cordialement à tous les deux.


Il suffit de remplacer

 TypeDocument = Mid(Code, 7, 1) ' septième caractère du code
    Mois = Left(Code, 2) 'les deux premiers caractères du code

    Select Case TypeDocument
        Case "1": TypeDocument = "DEVIS\"
         Case "2": TypeDocument = "FACTURE\"
        Case "0": TypeDocument = "FIN DE TRAVAUX\"
    End Select

    Select Case Mois
        Case "01": Mois = "JANVIER\"
         Case "02": Mois = "FÉVRIER\"
          Case "03": Mois = "MARS\"
           Case "04": Mois = "AVRIL\"
            Case "05": Mois = "MAI\"
             Case "06": Mois = "JUIN\"
            Case "07": Mois = "JUILLET\"
           Case "08": Mois = "AOÛT\"
          Case "09": Mois = "SEPTEMBRE\"
         Case "10": Mois = "OCTOBRE\"
        Case "11": Mois = "NOVEMBRE\"
       Case "12": Mois = "DÉCEMBRE\"
    End Select

par :

TypeDocument = Mid(Code, 7, 1) ' septième caractère du code
Mois = UCase(Format(DateSerial(Year(Date), Left(code, 2), Day(Date)), "mmmm")) & "\"

Select Case TypeDocument
        Case "1": TypeDocument = "DEVIS\"
         Case "2": TypeDocument = "FACTURE\"
        Case "0": TypeDocument = "FIN DE TRAVAUX\"
 End Select

Re bonjour Joyeux Noel

C'est ce que j'avais lors de mon explication précédente.

Je viens de le refaire en recopiant exactement la formule et le résultat est le même à savoir:

En effectuant pas à pas, elle s'arrête à end sub et remonte au départ. Ne passe pas sur

Function openAnyFile(strPath As String)

et la feuille en PDF n'apparait pas.

Pour moi, cela fonctionne très bien avec Sequoyah.

Personnellement je ne pourrais pas vous aider dans le pourquoi cela ne fonctionne pas, en revanche, si VOUS voulez comprendre pourquoi cela ne fonctionne pas, je suis à votre entière disposition pour copier les modifications faites et faire des essais sur mon classeur.

Cela ne m'ennuiera nullement.

Bien cordialement.

Rechercher des sujets similaires à "suivant numero recuperer pdf classeur"