vérifier l'existence d'un fichier et mettre vrai ou faux une cellule Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
p
profundone
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 21 février 2015
Version d'Excel : 2016

Message par profundone » 17 janvier 2018, 11:18

bonjour,

je souhaiterais faire ceci :

dans une colonne le nom d'un fichier et dans une autre je souhaiterais mettre le résultat VRAI ou FAUX.

est ce que quelqu'un pourrais m'aider à commencer.

Merci d'avance pour votre aide
Avatar du membre
GVIALLES
Membre dévoué
Membre dévoué
Messages : 814
Appréciations reçues : 73
Inscrit le : 28 novembre 2017
Version d'Excel : 2016, 360
Téléchargements : Mes applications

Message par GVIALLES » 17 janvier 2018, 12:59

Bonjour Profundone,

Je propose une fonction VBA:
Function IsFileExists(zFileName As String) As String
    Dim oFS As Object

    Set oFS = CreateObject("Scripting.FileSystemObject")
    
    If oFS.Fileexists(zFileName) Then
        IsFileExists = "VRAI"
    Else
        IsFileExists = "FAUX"
    End If

    Set oFS = Nothing
End Function
en indiquant dans les cellules devant recevoir "VRAI/FAUX" la formule "=IsFileExists(A1)" où A1 contient le nom du fichier (et son chemin complet, bien sûr...)
2 membres du forum aiment ce message.
Cordialement,

Gérard
p
profundone
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 21 février 2015
Version d'Excel : 2016

Message par profundone » 17 janvier 2018, 14:32

merci Gerard ça fonctionne.
je souhaiterais traiter tout une colonne
ensuite j'aimerais lire les fichiers texte s'il trouve "Volume C: [OSDisk]" il met "Déploiement OK" et s'il trouve "code 0x80070057" il met "correctif à appliquer"
Avatar du membre
GVIALLES
Membre dévoué
Membre dévoué
Messages : 814
Appréciations reçues : 73
Inscrit le : 28 novembre 2017
Version d'Excel : 2016, 360
Téléchargements : Mes applications

Message par GVIALLES » 17 janvier 2018, 21:07

Bonsoir profunde,

Peux-tu fournir un exemple de classeur et de 2 fichiers contenant l"un de texte "code 0x80070057" l'autre le texte "Volume C: [OSDisk]"?
Cordialement,

Gérard
p
profundone
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 21 février 2015
Version d'Excel : 2016

Message par profundone » 17 janvier 2018, 21:54

voila un exemple de fichier

colonne déploiement ok = je vérifier si le fichier de la colonne A existe je met OK ou NOK si le fichier n'existe pas
nom du fichier = A1 & .txt
colonne correctif à appliquer = je vérifier si le fichier existe, je lis dans le fichier et si je trouve ERREUR je met OK sinon NOK

merci d'avance pour ton aide
CZC4431BS4.txt
(440 Octets) Téléchargé 9 fois
CZC4343TLK.txt
(396 Octets) Téléchargé 7 fois
Test.xlsm
(9.65 Kio) Téléchargé 14 fois
Avatar du membre
GVIALLES
Membre dévoué
Membre dévoué
Messages : 814
Appréciations reçues : 73
Inscrit le : 28 novembre 2017
Version d'Excel : 2016, 360
Téléchargements : Mes applications

Message par GVIALLES » 18 janvier 2018, 09:12

Bonjour Profundone,

Nouvelle version du code VBA :
Option Explicit
Const cFileExistsValue = "OK"
Const cFileDontExistsValue = "NOK"
Const cErrorInFileValue = "Oui"
Const cNoErrorInFileValue = "Non"
Const cErreur = "code 0x80070057"
Const cBlank = ""
Function IsFileExists(zFileName As String) As String
    Dim sPath As String, sFilename As String
    Dim oFS As Object

    sPath = ThisWorkbook.Path
    sFilename = sPath & "\" & zFileName & ".txt"
    Set oFS = CreateObject("Scripting.FileSystemObject")
    
    If oFS.Fileexists(sFilename) Then
        IsFileExists = cFileExistsValue
    Else
        IsFileExists = cFileDontExistsValue
    End If

    Set oFS = Nothing
End Function
Function IsErrorInFile(zFileExists As Variant, zFileName As String) As String
    Dim sPath As String, sFilename As String
    Dim sBuffer As String, lPos As Long, i As Integer
    
    Select Case zFileExists
        Case Is = cFileExistsValue
            'Si fichier existe alors on traite
            sPath = ThisWorkbook.Path
            sFilename = sPath & "\" & zFileName & ".txt"
            'On ouvre le fichier
            Open sFilename For Input As #1
            'On lit le 4ème enregistrement du fichier
            For i = 1 To 4
                Line Input #1, sBuffer
            Next
            'On ferme le fichier
            Close #1
            
            'on recherche 'ERREUR' dans le buffer
            lPos = InStr(1, sBuffer, cErreur)
            
            If lPos > 0 Then
            'On a trouvé ERREUR
                IsErrorInFile = cErrorInFileValue
            Else
                IsErrorInFile = cNoErrorInFileValue
            End If
        Case Is = cFileDontExistsValue
            'Si le fichier n'existe pas, on renvoie une chaîne vide
            IsErrorInFile = cBlank
        Case Else
            'Si l'existence du fichier n'a pas été testée, on renvoie une chaîne vide
            IsErrorInFile = cBlank
    End Select
    
End Function
et en P.J. ton classeur mis à jour.

NB: J'ai considéré que les fichiers texte étaient stockés dans le même dossier que le classeur. Sinon il faut que tu modifie l'affection de sPath dans les 2 fonctions.
Test_GVS.xlsm
(18.99 Kio) Téléchargé 20 fois
Cordialement,

Gérard
p
profundone
Jeune membre
Jeune membre
Messages : 14
Inscrit le : 21 février 2015
Version d'Excel : 2016

Message par profundone » 18 janvier 2018, 11:06

c'est parfait, je l'ai adapter

merci beaucoup
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'525
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 18 janvier 2018, 11:26

Wahou, excellent !!

au passage une fonction plus simple pour tester l'existence d'un fichier sans utiliser Scripting.FileSystemObject
Function isFileExists(NomFichierComplet As String) As Boolean
    isFileExists = Len(Dir(NomFichierComplet)) > 0
End Function

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message