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

  • Initiateur de la discussion Initiateur de la discussion Cyr39
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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+
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
 
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
 
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
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
245
Réponses
10
Affichages
547
Réponses
3
Affichages
672
Réponses
3
Affichages
885
Retour