Verifier la présence d'un fichier en VBA

Messages postés
518
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
3 décembre 2019
- - Dernière réponse : Mistral_13200
Messages postés
518
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
3 décembre 2019
- 3 déc. 2019 à 15:59
Bonjour à tous,

Dans un classeur comportant plusieurs macros l’une d’elle vérifie la présence ou le chemin des répertoires et fichiers nécessaires à l’exécution de l’ensemble.
J’ai pu modifier sans problème tous les tests sur le répertoires, mais dans la ligne de code ci-dessous je vérifie la présence d’un fichier dans un répertoire :
If Not exist("C:\__Jugement_FDT\Diaporama\Palmares.xlsx ") Then MsgBox "Le fichier Palmares est introuvable.": Exit Sub

Je souhaiterais remplacer le chemin du répertoire par une « variable+le nom du fichier » ou par deux variables pour obtenir quelque chose comme :
If Not exist("Ma variable\Palmares.Xlsx") Then MsgBox "Le fichier Palmares est introuvable.": Exit Sub
ou
If Not exist("Ma variable\Mon fichier") Then MsgBox "Le fichier Palmares est introuvable.": Exit Sub

Je n’y suis pas arrivé et c’est pour ça que je sollicite votre aide.
D’avance merci.
Mistral
Afficher la suite 

3 réponses

Messages postés
7850
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
3 décembre 2019
1241
0
Merci
Bonjour,

Explications ici (concaténation) : http://boisgontierjacques.free.fr/pages_site/chaines.htm
Commenter la réponse de Patrice33740
Messages postés
6416
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 décembre 2019
419
0
Merci
Bonjour,

il suffit de vérifier si le fichier existe comme ceci:

https://excel-malin.com/codes-sources-vba/vba-verifier-si-le-fichier-existe/

cs_Le Pivert
Messages postés
6416
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 décembre 2019
419 -
Ta méthode de mettre un chemin en variable n'est pas bonne!

Il faut utiliser ce qu'Excel met à ta disposition pour avoir toujours le même chemin dans n'importe quelle configuration:

ThisWorkbook.Path

Il suffit à l'utilisateur de mettre son classeur dans le dossier dans lequel se trouve ses données.

ThisWorkbook.Path & "\"
lui donnera le chemin du dossier

voir ceci:

https://excel.developpez.com/faq/?page=FichiersDir#VerifExistenceFichier

Sinon il y a la méthode de recherche de fichier

Je ne comprends pas ta démarche!
Mistral_13200
Messages postés
518
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
3 décembre 2019
3 -
Je vais regarder …

Le classeur final sera utilisé par 6 personnes différentes. Chacune d’elles aura son propre ordinateur donc 6 architectures et configurations différentes. D’autre part, elles auront déjà reçu toutes les photos qu’elles auront installées, je ne sais ou sur leur machine.
À chacune d’elles je vais fournir un fichier Zip, avec un répertoire (nommé diaporama) et 3 sous-répertoires, qu’elles installeront là où elle le souhaite. Le fichier Xlsx, en question sera issu d’une base de données Access et sera obligatoirement dans le répertoire Diaporama fourni. Le nom du fichier sera différent pour les 6 personnes : de fichier S1 à Fichiers S6 .xlsx.
Pour que mon classeur fonctionne, j’ai besoin de connaitre les emplacements d’un certain nombre de choses :
- Les emplacements de fichiers sources et destinations (réglé la semaine dernière).
- L’emplacement du répertoire Diaporama qui me donnera accès au fichier.Xlsx et aux sous-répertoires de travail.

Voilà tu sais tout et j’espère avoir été clair.
Cordialement.
Mistral
cs_Le Pivert
Messages postés
6416
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 décembre 2019
419 -
C'est donc ThisWorkbook.Path qu'il te faut utiliser!

Pour ce qui est ton fichier que tu ne trouves pas. As-tu mis un antislash après ta variable chemin comme ceci:

Diaporama & "\"


@+
Mistral_13200
Messages postés
518
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
3 décembre 2019
3 -
Je viens de regarder ThisWorkbook.Path mais ça ne marche pas.
1) Cela donne l chemin du fichier ou se trouve la macro
2) Le chemin du répertoire et du fichier ne peut pas être en dur dans la macro.

Dernière précision, chaque utilisateur s'identifiera ce qui me permettra de connaitre le nom du fichier
Utilisateur A aura le Fichier _S1.xlsx … l'utilisateur F aura le fichier _S6 ce nom de fichier sera mis dans une variable
Mistral_13200
Messages postés
518
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
3 décembre 2019
3 -
MILLE mercis à toi c'est effectivement "\" qui manquait ma ligne de code est donc:

If Not exist(Diaporama & "\", Fichier) Then MsgBox "Le fichier Palmares est introuvable.": Exit Sub

Maintenant, je vais pouvoir poursuivre mes vérifications sur les autres macro.
Ton aide m'a été précieuse.

Cordialement
Mistral
Commenter la réponse de cs_Le Pivert
Messages postés
518
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
3 décembre 2019
3
0
Merci
Bonjour Patrice et merci pour ta réponse,

J'ai suivi le lien que tu m'as indiqué. Il est super intéressant et je ne le connaissais pas.
Grace à ça j'ai une ligne de code qui fonctionne (qui s'exécute sans erreur):
If Not exist(Diaporama & "F_Palmares_S3.xlsx") Then MsgBox "Le fichier Palmarès est introuvable.": Exit Sub

"Diaporama" est le chemin exact du répertoire.
"F_Palmares_S3.Xlsx" c'est le fichier qui est bien présent dans le répertoire.
Et pourtant j'ai MsgBox qui m'indique que le fichier n'y est pas.

Une idée, je sèche?

Cordialement.
Albert
Mistral_13200
Messages postés
518
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
3 décembre 2019
3 -
J'ai essaye une autre solution mais toujours non exploitable.
Pour plus de précision je vous mets le code complet de ma macro :

Public Function exist(chemin, Optional typ = 0) As Boolean
exist = IIf(Dir(chemin, IIf(typ = 0, 0, vbDirectory)) = "", False, True)
End Function


Sub Verfication()
'
' V?rification v?rifie la conformit? et la pr?sence des repertoires et fichiers au bon endroit
' et la syntaxe des noms.
'
Dim Couleur As String
Dim Nature As String
Dim Monochrome As String
Dim Theme As String
Dim Palamares As String
Dim Diaporama As String

Dim Fichier As String
Fichier = "F_Palmares_S3.xlsx"

Couleur = Sheets("Données").Range("C3").Value
Nature = Sheets("Données").Range("C4").Value
Monochrome = Sheets("Données").Range("C5").Value
Theme = Sheets("Données").Range("C6").Value
Diaporama = Sheets("Données").Range("C7").Value
Destination = Sheets("Données").Range("E3").Value



'If Not exist("C:\__Jugement_FDT\1_Couleur", 1) Then MsgBox "Le r?pertoire 1_Couleur est introuvable.": Exit Sub
If Not exist(Couleur, 1) Then MsgBox "Le r?pertoire 1_Couleur est introuvable.": Exit Sub
If Not exist(Nature, 1) Then MsgBox "Le r?pertoire 2_Nature est introuvable.": Exit Sub
If Not exist(Monochrome, 1) Then MsgBox "Le r?pertoire 3_Monochrome est introuvable.": Exit Sub
If Not exist(Theme, 1) Then MsgBox "Le r?pertoire 4_Th?me est introuvable.": Exit Sub
If Not exist(Destination, 1) Then MsgBox "Le r?pertoire 5_Destination est introuvable.": Exit Sub

' If Not exist("C:\__Jugement_FDT\Diaporama\Palmares.xlsx ") Then MsgBox "Le fichier Palmares est introuvable.": Exit Sub



If Not exist(Diaporama & Fichier) Then MsgBox "Le fichier Palmares est introuvable.": Exit Sub



Range("A1").Select_

MsgBox "Vérification termin?ée vous pouvez commencer ? créer votre diaporama."

End Sub


Mo, problème est toujours le même je ne retrouve pas le fichier "Palmares.Xlsx".

Merci d'avance pour votre aide.
Cordialement.
Mistral
Commenter la réponse de Mistral_13200