IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Test FileSearch nom exacte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut Test FileSearch nom exacte
    Bonjour,
    (VBA EXEL 2003)

    Je cherche à vérifier qu'un nom de fichier existe.
    J'utilise un test voir code ci-dessous.

    Je dois vérifier que le fichier Exemple : LD-OD-C02020.xls existe
    Si dans le répertoire de recherche, j'ai un fichier ZZZ-LD-OD-C02020.xls ou LD-OD-C02020-1.xls, le test est considéré comme vrai à la place de faux

    Quelle est la méthode pour faire ce test ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Function existe(ByVal adresse As String, ByVal nom As String) As Boolean
     
    'Objectif : vérifier l'existence d'un fichier dont l'adresse et le nom sont fournies par les
    'variables adresse et nom.
     
      With Application.FileSearch               'recherche le fichier excel
        .NewSearch                              'nommé exactement "nom"
        .LookIn = adresse                       'localisé par "adresse"
        .SearchSubFolders = False
        .Filename = nom
        .FileType = msoFileTypeExcelWorkbooks
        If .Execute() > 0 Then         'si le fichier est trouvé alors la fonction renvoie vraie sinon la réponse est faux.
          existe = True
        Else
          existe = False
        End If
      End With
     
    End Function

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,
    je te propose la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Existe(CheminComplet As String) As Boolean
    Existe = Dir(CheminComplet) <> ""
    End Function
    ou si tu préfères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Existe(Racine As String, NomClasseur As String) As Boolean
    Existe = Dir(Racine & Application.PathSeparator & NomClasseur) <> ""
    End Function
    De plus, je crois que FileSeach n'est plus utilisé dans Excel 2007.
    Cordialement

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    bonjour,

    Merci pour ton aide Fred,
    Ta solution ne fonctionne pas en office 2003.

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re
    j'utilise cette fonction depuis de nombreuses années.
    Vérifie si tu n'as pas des doubles / (application.pathseparator)
    @+

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    re,

    Voila le résultat d'une msgbox

    Call MsgBox(Racine & Application.PathSeparator & NomClasseur & " Condition :" & Existe2, vbExclamation)

    C:\Autodoc\OD\LD-OD-C02020.xlt Condition :Faux

    Le chemin correspond bien au fichier existant.
    La réponse est toujours faux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function Existe2(Racine As String, NomClasseur As String) As Boolean
    Existe2 = Dir(Racine & Application.PathSeparator & NomClasseur) <> ""
    Call MsgBox(Racine & Application.PathSeparator & NomClasseur & " Condition :" & Existe2, vbExclamation)
     
    End Function

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test
    MsgBox "le fichier existe = " & Existe("C:\Autodoc\OD\LD-OD-C02020.xlt")
    End Sub
    Function Existe(CheminComplet As String) As Boolean
    Existe = Dir(CheminComplet) <> ""
    End Function
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nom exact Windows event
    Par Gruick dans le forum Débuter
    Réponses: 9
    Dernier message: 22/07/2008, 12h21
  2. Error testing property 'nom' in bean of type null
    Par khaoula_14_05 dans le forum JSF
    Réponses: 4
    Dernier message: 31/03/2008, 14h37
  3. test sur nom de sheet => "error 9 out of range"
    Par _debutant dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 09/12/2007, 15h54
  4. [Tableaux] test performance nom de variable
    Par maximenet dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2006, 14h30
  5. Réponses: 3
    Dernier message: 02/03/2006, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo