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 :

Rechercher et ouvrir un fichier dans un dossier sous condition [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut Rechercher et ouvrir un fichier dans un dossier sous condition
    Bonjour

    Via un code vba je tente de faire une recherche de fichier dans un dossier excel via un inputbox dans lequel on met le nom du fichier recherché. Le code fonctionne pour le cas ou le fichier est présent dans le dossier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub open_file()
     
    Dim opened_trade As String
     
    opened_trade = InputBox("Entrer la reference recherché")  ‘
     
    ChDir "C:\test\dossier1"    ‘définition du chemin d’accès
     
    Workbooks.Open Filename:=opened_trade
     
     
    End Sub
    J’aimerai pouvoir établir une condition qui prend en compte l’éventualité que le fichier n’existe pas, une condition du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF le fichier existe dans le dossier THEN 
    Open le fichier 
    ELSE le fichier n’existe pas dans le dossier THEN 
    MsgBox ‘’ aucun fichier trouvé ‘’
    END IF
    Je n’arrive pas à définir cette condition
    Comment puis-je faire ?

    Merci d’avance

  2. #2
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonjour le forum,

    J'utilise cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    '*******************************************************************************************
    '***** Recherche si le fichier existe ******************************************************
    '*******************************************************************************************
    Public Function FichierExiste(ByVal CheminCompletfichier As String) As Boolean
        FichierExiste = False
        If Dir(CheminCompletfichier, vbHidden) <> "" Then
            FichierExiste = True
        End If
    End Function
    '---------------------------------------------------------------------------------------------------------------------------------------
    '*************************************************************************************************
    '---------------------------------------------------------------------------------------------------------------------------------------
    Que tu peux utiliser dans ta condition ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF FichierExiste("C:\....\tonfichier.xlsx") THEN 
    Open le fichier 
    ELSE
    MsgBox ‘’ aucun fichier trouvé ‘’
    END IF

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tu peux aussi procéder ainsi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim FSO As Object, Fichier As String
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Fichier = "c:\temp\test.xls"
        If FSO.fileexists(Fichier) = True Then
            Workbooks.Open Fichier
        End If

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut
    Bonjour

    Merci beaucoup pour vos retours respectifs en fait dans le code j’utilise une inputbox pour insérer un fichier recherché
    J’ai donc en fonction de vos idées procéder de la manière suivante :

    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
    Sub  test_extfich()
     
     
    Dim FSO As Object, Fichier As Variant, j as string
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
     
     j = InputBox("please insert the option reference") ‘utilisation de l’inputbox pour insérer le nom de fichier recherché
     
        Fichier = "C:\test\dossier_test  & " \ " & j & " ‘concaténation de l’extension au fichier inséré dans inputbox ‘’j’’
        If FSO.fileexists(Fichier) = True Then
            Workbooks.Open Fichier
        ElseIf FSO.fileexists(Fichier) = False Then
        MsgBox ("fichier non trouvé ")
        End If
     
     
    End Sub
    Malheureurement j’ai une erreur 13 au niveau de la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "C:\test\dossier_test  & " \ " & j & "
    Est le type de variable déclaré qui pose problème (string) j’ai essayé avec un variant ca donne la même chose ?

    Merci pour votre aide

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Par défaut
    Et comme ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "C:\test\dossier_test  & "\" & j & "

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut
    Bonjour

    L’erreur type 13 disparaît bien par contre la condition ne fonctionne pas :

    Disons que si un fichier j = 2 existe dans le dossier, la msgbox renvoyé par la condition est celle qui stipule que le fichier n’existe pas. J’ai l’impression que la concaténation n’est pas prise en compte ?

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "C:\test\dossier_test\" & J

  8. #8
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    les doubles quotes sont mal positionnées (il manque " apres test:

    Tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "C:\test\dossier_test  & " \ " & j & "
    Je penses que tu devrais écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "C:\test\dossier_test\ " & j
    car & " après j est également étrange. (il manque la double quote de fermetture.

    un string est délimité de part et d'autres par "

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut
    Bonjour

    Merci pour vos retours, malheureusement j'ai toujours la condition relative à la non existence du fichier quand celui est pourtant existant.

    C’est bizarre… j’ai crée un fichier ‘’TESTMAC’’ dans le chemin Fichier et lorsque je rentre en ’’dur’’ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "C:\test\dossier_test\TESTMAC"
    La condition relative à la non existence est encore renvoyé, voici le code complet :

    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
    Sub open_trade2()
     
     
    Dim FSO As Object, Fichier As String
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
     
     
         Fichier = "C:\test\dossier_test\TESTMAC"
     
        If FSO.fileexists(Fichier) = True Then
            Workbooks.Open Fichier
        ElseIf FSO.fileexists(Fichier) = False Then
        MsgBox ("fichier non trouvé")
        End If
     
    End sub
    ...

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Heu, il n'a pas d'extension, ton fichier ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut
    Si si, le nom du dossier est ‘’dossier_test’’ qui comprend une extension à plusieurs fichiers dont fait partie TESTMAC, j’ai juste testé ce chemin direct vers le fichier TESTMAC pour savoir si la concaténation utilisée était en cause, normalement étant donné que je mets un chemin « direct » sur un fichier existant la macro ne devrait pas me renvoyé un statut non existant (false) non ?

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'aurais dû être plus précis; ton fichier s'appelle bien "TESTMAC", pas "TESTMAC.xls" ou une autre extension ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut
    le fichier s'appelle bien TESTMAC

  14. #14
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Désolé, il fallait lire "il n'a pas d'extension, ton fichier ?"
    Salut Daniel.C,

    j'ai moi aussi l'impression d'après les réponses de Volubiliss qu'il y a de sa part une mauvaise compréhension de son code.

    J'en veux pour preuve ce ligne extraite de son code et surtout le commentaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "C:\test\dossier_test  & " \ " & j & " ‘concaténation de l’extension au fichier inséré dans inputbox ‘’j’’
    Il n'y a ici concatenation d'aucune extension mais du contenu d'une variable sensée contenir un nom de fichier complet (contenu qui n'est d'ailleurs par vérifié).

    Volubiliss, je pense que tu devrais consacrer un peu de temps à lire les tutos de base de la programmation en vba car tu ne comprends pas ce que tu fais.

    ------------Edit---------
    Nouvelle confirmation par Volubiliss lui-même:
    le fichier s'appelle bien TESTMAC
    Et bien alors Volubiliss,
    le code ci-dessous n'est pas prêt de marcher.

  15. #15
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'ai recréé ton environnement, mêmes fichier et dossiers. La macro ouvre bien le classeur, ici. Quelle version d'Excel as-tu ?

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut
    Je concède que je ne suis pas un pro de vba mais de là dire que je ne comprends pas ce que je fais, c’est un peu dure quand même
    J’ai des fichiers identifiés de 1 à 100 inclus dans un dossier nommé X que j’interroge via un inputbox comment composer la recherche dans la dénomination du chemin Fichier ? Ou comment dois-e construire le code si je suis totalement dans le faux ?

    Merci

    ma version excel est la 2003

  17. #17
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Ne le prends pas mal, on ne peut pas connaître le niveau de celui qui pose la question.
    Essaie d'exécuter cette macro :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test2()
    msgbox = Dir("C:\test\dossier_test\TESTMAC")
    End Sub
    Qu'est-ce que tu obtiens ?

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu!....
    bonjour

    il faut preciser l'extention
    un exemple :
    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
    Sub truc()
        Dim nomfichier As String
        'on appelle le inputbox pour taper le titre recherché
        nomfichier = Application.InputBox("Enter a nom de fichier")
        'une fois cliquer sur ok ou annuler  on sort de la sub
        If nomfichier = "" Then Exit Sub
        'sinon!!!
        fichier = "C:\test\dossier_test\" & nomfichier & ".xls"   'ou autre extention
        'on teste si le fichier existe
        If Dir(fichier) <> "" Then
            'si il existe alors
            Workbooks.Open fichier
            'si il n'existe pas alors
        Else
            MsgBox "le fichier est introuvable"
        End If
    End Sub
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Par défaut
    non je le prend pas mal, je suis tout à fais conscient de mon niveau très très sommaire en vba !
    j'ai lancé le test2 j'ai un message d'erreur :

    Un appel de fonction dans la partie gauche de l'affectation doit renvoyer une valeur de type Variant ou Object.
    Merci pour ton aide

  20. #20
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    L'extension n'est pas obligatoire, même si pratiquement on en met à tous les fichiers, ne serait-ce que pour ouvrir un classeur depuis l'explorer.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Rechercher existence d'un fichier dans un dossier
    Par tony_95 dans le forum VB.NET
    Réponses: 7
    Dernier message: 26/04/2010, 11h30
  2. Réponses: 2
    Dernier message: 03/06/2008, 21h56
  3. Rechercher un fichier dans un dossier
    Par GomuSan dans le forum Windows
    Réponses: 0
    Dernier message: 30/05/2008, 20h02
  4. Limite du nombre de fichiers dans un dossier sous Fedora4 ?
    Par arkofab dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 15/08/2007, 00h58
  5. Rechercher les nom de fichier dans un dossier
    Par Didibzh dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2007, 11h41

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