XL 2019 Verification de l'existance d'un fichier ( plante)

Cyr39

XLDnaute Nouveau
Bonsoir,
je vous sollicite car après des heures de recherche et réflexion, je ne parviens pas a resoudre mon soucis.
j'ai trouvé le soucis mais je ne parviens pas a le corriger .

Sub Enreg_Fournisseur1_Pdf()
Dim FileName As String
Dim LeNom As String, LeRep As String
Static Chemin As String
Chemin = LeRep & "\" & LeNom
L'origine du problème se situe ici avec ... Chemin = LeRep & "\" & LeNom j'obtient bien la création de la commande mais si la macro est lancer une deuxième fois
il devrait trouver que le fichier existe et crée une commande avec la mention "Rajout" mais il ne le fait que si je supprime le "\" Chemin = LeRep & LeNom


LeNom = Range("J6").Value
LeRep = ThisWorkbook.Path & "\Commandes Fournisseurs\"

FileName = VBA.FileSystem.Dir(Chemin)
If FileName = VBA.Constants.vbNullString Then
Call Filtrer_Défiltrer_Fournisseur1
Attente (500)
Call Filtrer_Défiltrer_Fournisseur1
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
LeRep & LeNom & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
MsgBox "La commande à été sauvegardée au format PDF dans le Dosssier Commandes Fournisseurs !"
Else
Call Filtrer_Défiltrer_Fournisseur1
Attente (500)
Call Filtrer_Défiltrer_Fournisseur1
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
LeRep & LeNom & " Rajout" & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
MsgBox "Le Rajout de commande à été sauvegardée au format PDF dans le Dosssier Commandes Fournisseurs !"
End If
End Sub

un grand merci pour vos suggestions ou la correction de mon code..
 
Solution
Bonjour Cyr39, soan, le forum,

Le code du post #6 va bien si l'on corrige => FileName = VBA.FileSystem.Dir(Chemin & ".pdf")

Mais pourquoi utiliser la variable FileName, il est quand même plus simple d'écrire :
Code:
If Dir(Chemin & ".pdf") = "" Then
    ActiveSheet.ExportAsFixedFormat xlTypePDF, Chemin & ".pdf"
    chn = "La commande à été sauvegardée"
Else
    ActiveSheet.ExportAsFixedFormat xlTypePDF, Chemin & " Rajout.pdf"
    chn = "Le Rajout de commande à été sauvegardé"
End If
PS : inutile de déclarer Chemin Static, c'est une variable comme les autres !

A+

soan

XLDnaute Barbatruc
Inactif
Bonsoir Cyr39,

essaye avec ce début de code VBA :

VB:
Sub Enreg_Fournisseur1_Pdf()
  Dim FileName$, LeNom$, LeRep$
  Static Chemin$
  LeRep = ThisWorkbook.Path & "\Commandes Fournisseurs\"
  LeNom = [J6]: Chemin = LeRep & LeNom

note bien que dans ton code VBA initial, tu exécutes cette instruction :

Chemin = LeRep & "\" & LeNom

alors que LeRep et LeNom sont affectés en dessous ! 😭

soan
 

soan

XLDnaute Barbatruc
Inactif
l'ennui, c'est que j'sais pas c'qu'il y a en J6 ! et surtout :

est-ce que la donnée de J6 se termine par un signe « \ » ou non ?



note que là : LeRep & LeNom & ".pdf"

LeNom ne doit pas se terminer par « \ »

alors que là : LeRep & LeNom & " Rajout" & ".pdf"

il faut un « \ » entre LeNom et " Rajout"

soan
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Cyr39,

essaye ce code VBA :

VB:
Sub Enreg_Fournisseur1_Pdf()
  Dim FileName$, LeNom$, LeRep$, chn$
  Static Chemin$
  LeRep = ThisWorkbook.Path & "\Commandes Fournisseurs\"
  LeNom = [J6] 'J6 : "15 Mars 2021 Fournisseur1"
  Chemin = LeRep & LeNom
  '=> Chemin : ThisWorkbook.Path & "\Commandes Fournisseurs\15 Mars 2021 Fournisseur1"
  FileName = VBA.FileSystem.Dir(Chemin)
  Filtrer_Défiltrer_Fournisseur1
  Attente 500
  Filtrer_Défiltrer_Fournisseur1
  If FileName = VBA.Constants.vbNullString Then
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=Chemin & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1
    '=> FileName : ThisWorkbook.Path & "\Commandes Fournisseurs\15 Mars 2021 Fournisseur1.pdf"
    chn = "La commande à été sauvegardée"
  Else
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=Chemin & " Rajout.pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1
    '=> FileName : ThisWorkbook.Path & "\Commandes Fournisseurs\15 Mars 2021 Fournisseur1 Rajout.pdf"
    chn = "Le Rajout de commande à été sauvegardé"
  End If
  MsgBox chn & " au format PDF dans le Dosssier Commandes Fournisseurs !"
End Sub

au cas où ça marche pas, les commentaires devraient t'aider à trouver ce qui ne va pas.

soan
 

job75

XLDnaute Barbatruc
Bonjour Cyr39, soan, le forum,

Le code du post #6 va bien si l'on corrige => FileName = VBA.FileSystem.Dir(Chemin & ".pdf")

Mais pourquoi utiliser la variable FileName, il est quand même plus simple d'écrire :
Code:
If Dir(Chemin & ".pdf") = "" Then
    ActiveSheet.ExportAsFixedFormat xlTypePDF, Chemin & ".pdf"
    chn = "La commande à été sauvegardée"
Else
    ActiveSheet.ExportAsFixedFormat xlTypePDF, Chemin & " Rajout.pdf"
    chn = "Le Rajout de commande à été sauvegardé"
End If
PS : inutile de déclarer Chemin Static, c'est une variable comme les autres !

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 145
Messages
2 085 762
Membres
102 966
dernier inscrit
InitialPP