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 :

recherche valeur dans un fichier extérieur


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bonjour,


    Je n'arrive pas à trouver la solution pour ouvrir les fichiers où une valeur recherchée est présente.

    En fait, je souhaiterais ouvrir les fichiers résultant d'une recherche sur une valeur précise.

    Clairement, j'ai une cellule "Code" dans mon fichier rechercher.xls
    En cliquant sur le bouton rechercher la macro doit lancer la recherche dans le répertoire "C:Bordereau/" et ouvrir les fichier excel dans lesquels le "code" est présent.

    Suis-je clair ?

    Je pense qu'il y a une possibilité car j'ai travaillé par le passé sur ce système mais c'était pour identifier uniquement des noms de fichiers et non des données à l'intérieur des fichiers. Voici le code que j'avais utilisé pour cette méthode :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Sub Recherche_par_code_client()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 17/02/2009 par Nicolas Baudry
    '
     
     
    Sheets("Feuil1").Select
    Range("D4").Select
    lot = ActiveCell.Value
     
     
        myrep = "c:\Lots\"
     
     
        nomfich = Dir(myrep & "\*" & lot & "*.pdf")
     
     
        If nomfich <> "" Then
            Msg = "Il existe un Contrôle Botanique pour le lot " & lot & vbCrLf & "Cliquez sur 'Oui' pour l'ouvrir"    ' Définit le message.
            Style = vbYesNo + vbInformation    ' Définit les boutons.
            Title = "Résultat de la recherche "    ' Définit le titre.
     
            Response = MsgBox(Msg, Style, Title) ' Affiche le message.
     
            If Response = vbYes Then    ' L'utilisateur a choisi Oui.
     
                fich = (myrep & "\" & nomfich)
                ShellExecute 0, "open", fich, "", "", 0
     
                Else
                ActiveSheet.Range("B6").Select
     
            End If
     
        Else
     
            Msg = "Il n'y a pas de Contrôle Botanique pour le lot " & lot & vbCrLf & "Cliquez sur Oui pour le créer"    ' Définit le message.
            Style = vbYesNo + vbInformation    ' Définit les boutons.
            Title = "Résultat de la recherche "    ' Définit le titre.
     
            Response = MsgBox(Msg, Style, Title) ' Affiche le message.
     
                If Response = vbYes Then    ' L'utilisateur a choisi Oui.
                Preparation_pour_CB
     
                Else
                ActiveSheet.Range("B6").Select
     
                End If
     
            End If
        End If
     
     
    End Sub
    Par avance merci pour votre aide

    Liop

    Plus clairement, je souhaite crééer une macro permettant de faire la même chose que le module de recherche sous windows et y ajouter des fonctions supplémentaire.


    Dans un fichier recherche.xls
    1. Rechercher le texte "x" dans le repertoire "c:/liop/"
    2. Ouvrir le(s) fichier(s) trouvré(s) (fichier excel)
    3. Copier la ligne dans le(s) fichier(s) trouvés où "x" est présent
    4. Coller la ligne dans le fichier recherche.xls (où on a lancé la macro)
    5. Fermer le(s) fichier(s) trouvé(s)

    Suis je plus clair ?


    Merci

    Liop

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Pourquoi fais tu une recherche de fichiers .pdf alors que tu écris chercher des fichiers .xls ?

    Par ailleurs peux tu dire précisément ce qui ne marche pas.

    Je n'ai pas vu de boucle, ta recherche doit s'arrêter sur le premier fichier qui satisfait le critère de recherche.
    La qualité et la précision de la réponse sont proportionnelles à celles de la question.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bonjour,


    Pourquoi fais tu une recherche de fichiers .pdf alors que tu écris chercher des fichiers .xls ?
    Le code est simplement un exemple de recherche que j'ai utilisé par le passé mais avec qui ne correspond pas pour mes besoins actuels.


    Par ailleurs peux tu dire précisément ce qui ne marche pas.
    tout car je n'arrive pas à savoir quoi utiliser pour faire le process suivant :
    Dans un fichier recherche.xls
    1. Rechercher le texte "x" dans le repertoire "c:/liop/"
    2. Ouvrir le(s) fichier(s) trouvré(s) (fichier excel)
    3. Copier la ligne dans le(s) fichier(s) trouvés où "x" est présent
    4. Coller la ligne dans le fichier recherche.xls (où on a lancé la macro)
    5. Fermer le(s) fichier(s) trouvé(s)


    ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bon j'ai réussi à récupérer un code qui va me permettre de faire un peu ce que je voulais :
    Dans ThisWorkBook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub rechercher_Code()
     
     
    Sheets("Feuil1").Select
        client = Range("D4").Value
        Rep = Range("A1").Value
     
     
    OpenFindFile "C:\Bordereau de visites", "*" & Rep & "*.xls", client
     
     
    End Sub

    Dans un Module :
    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
     
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
            (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
             ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Declare Function GetActiveWindow Lib "user32" () As Long
    Private Const SW_SHOW = 5
     
    Public Sub OpenFindFile(Optional pFolder As String, Optional pFile As String, Optional pFindIn As String)
    Call ShellExecute(GetActiveWindow, "find", pFolder, vbNullString, vbNullString, SW_SHOW)
    If pFile <> "" Then
        SendKeys pFile, True
    End If
    If pFindIn <> "" Then
        SendKeys "{TAB}" & pFindIn, True
    End If
    End Sub
    Lorsque je clique sur mon bouton, j'ai une erreur de compilation "Type d'argument ByRef incompatible" et il surligne client dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OpenFindFile "C:\Bordereau de visites", "*" & Rep & "*.xls", client
    Est ce qq qq1 peux m'aider ?

  5. #5
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Comme ça ca devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub OpenFindFile(Optional pFolder As String, Optional pFile As String, Optional ByVal pFindIn As String)
    ' ...
    End Sub

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

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

    j'ai regardé en très grande vitesse, mais il me semble qu'il y a du travail.

    1) Tu ne déclares pas tes varaibles. Pas prudent du tout.
    Utilise en debut de ton module et déclare tout.
    dans ce cas pas de problème de type.
    2) déclare CLIENT comme string (chez toi il est variant)
    3) Ce code me semble faux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OpenFindFile "C:\Bordereau de visites", "*" & Rep & "*.xls", client
    2 fois *. ??? Le premier me semble de trop.

    4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        client = Range("D4").Value
    peut être écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        client = Range("D4")
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Merci pour vos réponses

    je vais continuer avec ce code :
    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
    Option Explicit
    Option Base 1
    Const Dossier As String = "C:\Bordereau de visites"
    Dim client As String
    Dim Rep As String
     
     
    Sub rechercher_Code()
     
     
    Sheets("Feuil1").Select
        client = Range("D4")
        Rep = Range("A1")
     
     
    OpenFindFile Dossier, "*" & Rep & "*.xls", client
     
     
    End Sub
    Et essayer d'avancer dans ma galère

    merci encore

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

Discussions similaires

  1. Recherche valeurs dans un fichier
    Par polls2 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/01/2013, 15h06
  2. Rechercher valeur dans fichier ini?
    Par jojo86 dans le forum Langage
    Réponses: 10
    Dernier message: 06/02/2009, 12h10
  3. recherche valeur dans fichier fermé
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/02/2008, 12h06
  4. Recherche de valeurs dans plusieurs fichiers
    Par Trooper2 dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 04/07/2007, 12h04
  5. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 08h26

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