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.
- Messages
- 3'581
- Excel
- 2013, 2019, 365
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt fichiers
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
- Messages
- 3'581
- Excel
- 2013, 2019, 365
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt fichiers
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
- Messages
- 3'581
- Excel
- 2013, 2019, 365
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt fichiers
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.
- Messages
- 3'581
- Excel
- 2013, 2019, 365
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt fichiers
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.