Menu

Ouvrir fichier pdf avec un chiffre contenu dans le nom du fichier

Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
- - Dernière réponse : f894009
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
- 18 mai 2019 à 18:47
Bonjour forum,

je bloque sur le code ci dessous je ne trouve pas la solution
j'ai une combobox "Cbo_N°Facture" qui liste des numéros de 1 à (sans limite) qui correspondent à des numéros de factures.
Exemple du nom de mes fichiers (voir liste): -Facture N°1-nom de client N°112-01-04-19
Je voudrai a laide de mon bouton "ouvrir" pouvoir une fois le numéro sélectionné dans la combobox "Cbo_N°Facture" ouvrir le fichier PDF contenant ce numéro.



Private Sub CommandButton3_Click()

Dim Chemin As String
Dim NFichier As String

NFichier = "-Facture N°" & Cbo_N°Facture.Value

Chemin = "D:\WILLY\Devis-Factures-2019\FACTURES-PDF\Factures\"

'NFichier = "-Facture N°" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") & ".pdf"


If Dir(Chemin & NFichier & "*.pdf") <> "" Then ThisWorkbook.FollowHyperlink Chemin & NFichier & "*.pdf"
Else: MsgBox "Fichier '" & NFichier & "' introuvable..."

End Sub


Merci pour votre aide


Configuration: Windows / Firefox 66.0
Afficher la suite 

Votre réponse

16 réponses

Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
0
Merci
Bonjour,

Tu n'est pas loin de la solution :

If Dir(Chemin & NFichier & ".pdf") <> "" Then ThisWorkbook.FollowHyperlink Chemin & NFichier & ".pdf"


Au moment de l'ouverture, l'Astérix ne peut être dans le nom du fichier. Ici l'astérix est un caractère qui spécifie n'importe quel caractère.

K
Commenter la réponse de Kalissi
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonsoir Kalissi

Merci pour ton attention
J'ai modifié mais ça ne fonctionne pas non plus.
1) il me bloque a ELSE
2) après suppression de ELSE me dit fichier introuvable




Private Sub CommandButton3_Click()

Dim Chemin As String
Dim NFichier As String

NFichier = "-Facture N°" & Cbo_N°Facture.Value

Chemin = "D:\WILLY\Devis-Factures-2019\FACTURES-PDF\Factures\"
'NFichier = "-Facture N°" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") & ".pdf"

If Dir(Chemin & NFichier & ".pdf") <> "" Then ThisWorkbook.FollowHyperlink Chemin & NFichier & ".pdf"
: MsgBox "Fichier '" & NFichier & "' introuvable..."

End Sub
Commenter la réponse de mokuht
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
0
Merci
Bonjour,

J'ai quelque peu modifier ton code mais celui-ci fonctionne sous Excel 2013 ...

Private Sub BtnExecuter_Click()

    Dim Chemin As String
    Dim NFichier As String

    'NFichier = "-Facture N" & cboNoFacture.Value
    NFichier = "MN" & cboNoFacture.Value '& ".pdf"

    'Chemin = "D:\WILLY\Devis-Factures-2019\FACTURES-PDF\Factures\"
    Chemin = "C:\Document\Dev\Excel_VBA\Test\"

    'NFichier = "-Facture N°" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") & ".pdf"

    If Dir(Chemin & NFichier & "*.pdf") <> "" Then
        ThisWorkbook.FollowHyperlink Chemin & NFichier & ".pdf"
    Else
        MsgBox "Fichier '" & NFichier & "' introuvable..."
    End If

End Sub


Il est à noter, que je ne place jamais de caractères accentué dans le code ...
J'ai retirer le caractère "°", le caractère qui succède à "N" ... "-Facture N°"

K
Commenter la réponse de Kalissi
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonjour kalissi,
Je suis en déplacement je regarde ca demaon des mon retour .
Merci a toi
--
Commenter la réponse de mokuht
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonjour Kalissi,
Merci pour ton retour

ce code fonctionne mais il ne prend en compte que le début du nom de fichier a savoir " -Facture No5"

le souci c'est que mes fichiers ne sont pas nommés comme ça :


mais plutôt comme ça :


-Facture N°5-Nom du client-Client N°113-01-04-19

avec cette ligne de code

NFichier = "-Facture N°" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") & ".pdf"


donc le code suivant fonctionne bien mais pour cela il faudrait que je renomme tout mes fichiers
ce qui n'est pas possible parce que j'ai besoin des infos du titre lors de l'enregistrement du fichier.

Private Sub CommandButton3_Click()

Dim Chemin As String
Dim NFichier As String

NFichier = "-Facture No" & Cbo_NoFacture.Value
'NFichier = "MN" & cboNoFacture.Value '& ".pdf"

Chemin = "D:\WILLY\Devis-Factures-2019\FACTURES-PDF\Factures\"
'Chemin = "C:\Document\Dev\Excel_VBA\Test\"

'NFichier = "-Facture N°" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") & ".pdf"

If Dir(Chemin & NFichier & ".pdf") <> "" Then
ThisWorkbook.FollowHyperlink Chemin & NFichier & ".pdf"
Else
MsgBox "Fichier '" & NFichier & "' introuvable..."
End If
End Sub
Commenter la réponse de mokuht
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
0
Merci
Bonjour,

En fait, il te suffit de construire le nom du fichier pas à pas.
Je m'explique :

Au lieu de construire le nom au complet, construit le par étape dans un premier temps ...
NFichier = "-Facture N°" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") & ".pdf"


NFichier = "-Facture N°" & Range("F2").Value


NFichier = "-Facture N°" & Range("F2").Value & "-" & Range("F9").Value


etc ...

Une fois que tu auras obtenu le bon nom de fichier, tu pourra refactoriser la ligne.

K
Commenter la réponse de Kalissi
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonjour,

Si j'ai bien compris le code se décompose comme ça
ça ne fonctionne pas.


Private Sub EXPORT_FACTURE_PDF_Click()
Dim Chemin As String
Dim NFichier As String
'PDF
Chemin = "D:\WILLY\Devis-Factures-2019\FACTURES-PDF\Factures\"
'NFichier = "-Facture No" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") & ".pdf"
NFichier = "-Facture No" & Range("F2").Value
NFichier = "-Facture No" & Range("F2") & "-" & Range("F9").Value
NFichier = "-Facture No" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2").Value
NFichier = "-Facture No" & Range("F2") & "-" & Range("F9") & "-" & "Client N°" & Range("H2") & "-" & Format(Now, "dd-mm-yy") ' & ".pdf"

Worksheets("FACTURE").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & NFichier, Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
Commenter la réponse de mokuht
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
0
Merci
Salut,

Je pensais que tu pourrais suivre les lignes en mode pas à pas.
Connais-tu le mode pas à pas (debug) sous l'éditeur de visual basic.

NFichier = "-Facture No" & Range("F2").Value
NFichier = "-Facture No" & Range("F2").Value & "-" & Range("F9").Value
NFichier = "-Facture No" & Range("F2"").Value) & "-" & Range("F9").Value & "-" & "Client N°" & Range("H2").Value
NFichier = "-Facture No" & Range("F2").Value & "-" & Range("F9").Value & "-" & "Client N°" & Range("H2").Value & "-" & Format(Now, "dd-mm-yy") ' & ".pdf"


Donc, si tu place un point d'arrêt à la première ligne :

NFichier = "-Facture No" & Range("F2").Value

NFichier doit être égale à [-Facture No[Valeur de la cellule F2]]

à la seconde ligne :

NFichier = "-Facture No" & Range("F2").Value & "-" & Range("F9").Value

NFichier doit être égale à [-Facture No[Valeur de la cellule F2]-[Valeur de la cellule F9]].

Le but bien sur est de s'assurer que le nom du fichier est bien construit.

note : NFichier = "-Facture No" & Range("F2").Value ~ NFichier = "-Facture No" & Range("F2")
Le point value [.Value] n'est qu'une façon explicite de capturer la valeur de la cellule.

Si tu as plus d'une feuille dans ton classeur, il est possible que tu doives spécifié la feuille :
NFichier = "-Facture No" & Sheets("MaFeuille").Range("F2").Value etc ...

K
Commenter la réponse de Kalissi
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonsoir kalissi,

Non je ne connais pas le mode pas à pas (debug) sous l'éditeur de visual basic.
en fait je ne connais pas grand chose au Vba.
le fichier je l'ai construis avec plusieurs personnes qui m'ont aidé comme tu le fait
j'ai adapté les codes et les exemples qui m'ont été fourni pour en arrivé là.

j'ai passer beaucoup de temps à le construire mais sur ce dernier point je bloque et si je ne trouve pas de solution j'abandonnerai cette idée.

en tout cas je te remercie pour le temps que tu y consacre.

j'ai essayer de bidouiller le code dans tous les sens mais sans résultat.
Commenter la réponse de mokuht
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
0
Merci
Bonjour,

Je vais tenter de t'expliquer comment faire le mode pas à pas.

1.) Ouvrir VBE (Visual Basic Editor).
2.) Dans la fenêtre du code, tu place ton curseur sur le première ligne de code de la méthode.

NFichier = "-Facture No" & Range("F2").Value


À gauche de cette ligne, clic sur la barre de défilement qui n'existe pas à gauche.
Un point noir devrait apparaitre et toute la ligne sera surligné.
Dans la barre d'outils, tu devrait repérer un petit triangle vert, c'est le "run".

Une fois le programme lancé, il s'arrêtera là où tu as mis un point d'arrêt.
Ensuite à l'aide de la touche "F8" ou l'icone de la barre d'outils "pas à pas détaillé",
tu suivra l'exécution ligne par ligne.

Il m'apparait évident que c'est la construction du nom de fichier qui est le problème.
Et avec le mode pas à pas, tu devrait trouver le problème.
Lorsque le programme est en mode pas à pas, tu peux cliquer sur une variable, clic droit,
menu contextuel, "Ajouter un espion", ainsi tu pourra suivre aisément la construction du nom de fichier.

Je continue de suivre le fil ...

K
Commenter la réponse de Kalissi
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonjour kalissi

Malgré tes explications je ne m'en sors pas j'ai le cerveau qui fume
eh oui suis pas doué !

je te transmet le lien pour telecharger mon fichier si tu n'y vois d’inconvénient et si le cœur tant dit.

https://1fichier.com/?bvvykd64ig5br2rqyddj
Commenter la réponse de mokuht
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
0
Merci
Salut,

Je regarde et te reviens ...

K
Commenter la réponse de Kalissi
Messages postés
217
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
17 mai 2019
20
0
Merci
Salut,

désolé, je ne réussi pas à télécharger le fichier ...
j'ai essayé de deux endroits différents ...
mais rien n'y fait ...

et je n'ai pas vraiment le goût d'ouvrir la sécurité sur mes machines ...
peut-être un nouvel essai ici : https://www.cjoint.com/

n.b. évite les données sensibles

K
f894009
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
1371 -
Bonjour,

Kalissi
J'ai retirer le caractère "°", le caractère qui succède à "N" ... "-Facture N°"

En effet dans du code oui, mais dans du texte pas de probleme.

mokuht
Une idee aussi sote que grenue, le fichier existe reelement au moins???
Car votre code marche au detail pres de la ligne du dessus
Commenter la réponse de Kalissi
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonjour Kalissi

le fichier est nettoyé de toutes données sensibles

j'ai effectivement enlevé les "°" et remplacé comme tu me l'a dit par "o" minuscule

et pour répondre à ta question oui les fichiers existent tu les as en haut du fil
et le chemin repertoire aussi

sauf que maintenant je les ai renommé avec le "o"
comme ceci : -Facture No5-Nom du client-Client N°113-01-04-19

voici le fichier complet avec mes 2 types de devis ou j'ai adapté les codes pour chacun d'entre eux.

https://www.cjoint.com/c/IErgZFtxbLT

Merci a toi.
f894009
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
1371 -
Re,

Oui, mais y a toujours un probleme ou pas!!!!!!!!
Commenter la réponse de mokuht
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonjour oui le problème persiste
--
f894009
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
1371 -
Re,
Si personne ne prend la suite, je regarde la chose demain matin
f894009
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
1371 -
Bonjour,
CLIENTA et B surement pareil:
A quoi sert de faire un choix avec votre combobox si vous prenez les valeurs dans DEVISA avec en plus la date du jour pour afficher un PDF autre ?????????????????????????????????????????????????????????

Suite:
Si numero de facture unique

Private Sub CmD_Affiche_PDF_Click()
    Dim Chemin As String
    Dim NFichier As String
    Dim Nomclient, N?client As String, Fichier
    
    NFichier = "-Facture No" & Cbo_NoFacture.Value & "*.pdf"
    Chemin = "D:\WILLY\Devis-Factures-2019\FACTURES-PDF\Factures\"
    If Dir(Chemin & NFichier) <> "" Then
        Fichier = Dir(Chemin & NFichier)
        ThisWorkbook.FollowHyperlink Chemin & Fichier
    Else
        MsgBox "Fichier '" & NFichier & "' introuvable..."
    End If
End Sub
Commenter la réponse de mokuht
Messages postés
13
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Bonjour et merci pour le code
ça fonctionne très bien
Désolé de ne pas avoir construit ce fichier dans les règles.
je l'ai pensé au fur et à mesure sans savoir jusqu’où je pourrai aller, et essayé de l’améliorer au coup par coup en tant que néophyte.
le fonctionne parfaitement.



Merci pour ton temps.
f894009
Messages postés
14356
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2019
1371 -
Re,

Désolé de ne pas avoir construit ce fichier dans les règles.
Pas grave, y a pas d'lezard
Commenter la réponse de mokuht