Verifier la présence d'un fichier en VBA
Mistral_13200
Messages postés
636
Date d'inscription
Statut
Membre
Dernière intervention
-
Mistral_13200 Messages postés 636 Date d'inscription Statut Membre Dernière intervention -
Mistral_13200 Messages postés 636 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Vba vérifier si un fichier existe
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Bonjour,
Explications ici (concaténation) : http://boisgontierjacques.free.fr/pages_site/chaines.htm
Explications ici (concaténation) : http://boisgontierjacques.free.fr/pages_site/chaines.htm
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/
il suffit de vérifier si le fichier existe comme ceci:
https://excel-malin.com/codes-sources-vba/vba-verifier-si-le-fichier-existe/
Bonjour Pivert,
C'est toujours pour le même classeur que celui ou tu m'as déjà aidé.
Comme c'est un classeur qui sera à la disposition de plusieurs personnes avec des ordinateurs différents et pas forcément la même arborescence, je ne peux pas mettre le nom d'un chemin en dur dans la macro.
Grace à toi je sais récupérer le chemin d'une répertoire. Je sais aussi affecter un chemin à une variable.
L'idée c'est de vérifier la présence du fichier avec une variable pour le chemin et une autre pour le nom de fichier.
Le dernier code que j'ai mis précédemment fonctionne correctement mais il ne trouve pas le fichier et je ne sais pas pourquoi. Sans ça je ne peux pas continuer les autres macros.
Aurais-tu une idée?
Cordialement
Mistral
C'est toujours pour le même classeur que celui ou tu m'as déjà aidé.
Comme c'est un classeur qui sera à la disposition de plusieurs personnes avec des ordinateurs différents et pas forcément la même arborescence, je ne peux pas mettre le nom d'un chemin en dur dans la macro.
Grace à toi je sais récupérer le chemin d'une répertoire. Je sais aussi affecter un chemin à une variable.
L'idée c'est de vérifier la présence du fichier avec une variable pour le chemin et une autre pour le nom de fichier.
Le dernier code que j'ai mis précédemment fonctionne correctement mais il ne trouve pas le fichier et je ne sais pas pourquoi. Sans ça je ne peux pas continuer les autres macros.
Aurais-tu une idée?
Cordialement
Mistral
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.
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!
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!
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
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
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
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
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
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
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
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