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 par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut Recherche par macro
    Bonjour,

    J'ai des fichiers où se trouvent des informations (=des mots clefs) dans la colonne A.

    Jusqu'à présent, je faisais recherche grâce à l'explorateur windows (exemple : j'allais dans le dossier où se trouvaient mes fichiers), clic droit et je faisais "recherche de mots". L'explorateur trouvait le mot et indiquait le nom du fichier, les met dans sa liste, je clique dessus pour les ouvrir.

    Par macro, et en utilisant un code, style "recherchev" (c'est ce que j'ai pu comprendre avec le forum....), eske je peux pas faire cette recherche depuis un classeur excel :

    j'ouvre un classeur, dans la cellule A1, je mets le mot à rechercher, et je lance ma macro, qui va rechercher dans tous les fichiers, dans la colonne A, le mot et ouvre le classeur où se trouve ce mot ?

    Merci,
    A+

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tout ce que j'ai à te proposer, c'est ça http://www.developpez.net/forums/sho...d.php?t=520692, mais ça recherche un nom de fichier, pas un mot dans le fichier.
    Mais il doit y avoir une réponse avec un API de Windows. Ne désespère pas
    Bonne chance

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci ouskel'n'or

    J'ai trouvé :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Option Explicit
     
     
    Sub Macro222()
    Call HighlightWord(Range("F1"), Range("A1:A30"))
    End Sub
     
    Sub HighlightWord(ByVal str As String, r As Range)
     
        Dim res As Range
        Dim firstAddress As String, pos As Long
     
        ' on fait une recherche sur la plage
        With r.Cells
            Set res = .Find(What:=str, After:=r.Cells(1, 1), LookIn:=xlFormulas _
                , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
     
            If Not res Is Nothing Then
                firstAddress = res.Address
                Do
                    pos = InStr(res.Value, str)
                    Do While pos > 0
                        With res.Characters(pos, Len(str))
                            'ici on mettra en gras rouge
                            .Font.Color = vbRed
                            .Font.Bold = True
                        End With
                        pos = InStr(pos + 1, res.Value, str)
                    Loop
                    Set res = .Find(What:=str, After:=res, LookIn:=xlFormulas _
                            , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                            MatchCase:=False, SearchFormat:=False)
                Loop While Not res Is Nothing And res.Address <> firstAddress
            End If
        End With
     
        Set res = Nothing
     
    End Sub
    Code qui donne pile-poil ce que je veux : en cellule F1, je mets mon mot et lorsque je lance la macro, j'ai mon résultat qui s'affiche en rouge, top cool !!!!

    (mais je n'ai pas de mérite, j'ai utilisé la contribution (je n'y étais jamais allé jusque là...) de many31 et cafeine).

    Merci
    A+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je suis content que tu aies trouvé ton bonheur. Cependant, telle que ta question était posée,
    Jusqu'à présent, je faisais recherche grâce à l'explorateur windows (exemple : j'allais dans le dossier où se trouvaient mes fichiers), clic droit et je faisais "recherche de mots". L'explorateur trouvait le mot et indiquait le nom du fichier, les met dans sa liste, je clique dessus pour les ouvrir.
    ... et puisque tu évoques la méthode de l'Explorateur qui permet ce type de recherche... j'ai cru (et je ne pense pas être le seul) que tu cherchais un fichier, contenant un mot précis, dans ton disque dur.
    Sinon, la solution que tu proposes est celle de l'aide en ligne, (F1 sur Find et tu la trouveras) mise en rouge exceptée de la cellule trouvée. Et cette solution, nombre d'entre nous auraient pu te la proposer... s'ils avaient compris le vrai problème...
    D'où l'intérêt d'un question bien posée. Il aurait suffit que tu mettes : "Recherche d'un mot dans un classeur ouvert (où qu'il soit ou bien dans une plage de cellules précise)"
    Juste pour que la prochaine fois...

    Sans rancune, ça m'a permis de réviser la recherche de fichier dans un disque dur
    Bonne continuation

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Hello Ouskel'n'or,

    Tu as entièrement raison, je viens de me relire, et c'est vrai que c'était pas assez clair....., mais ça m'a permis de découvrir le dossier "contribution" et ça, c'était une chouette découverte...!!!!

    En fait, effectivement je cherchais un fichier qui contenait un mot, mais j'ai trouvé en alliant mes macros : je vais dans le répertoire, je lis (=j'ouvre mais ne le fait pas apparaitre) les fichiers, fais la recherche dans la colonne A, si le classeur contient le mot, je l'ouvre, sinon je passe à un autre fichier du répertoire, et ainisi de suite jusqu'avoir fait le tour de tous les fichiers du répertoire.

    Voilà, lourd, mais ça fonctionne....

    Merci,
    A+ pour de prochaines aventures

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

Discussions similaires

  1. Recherche puis collage par macro
    Par ludion62 dans le forum Excel
    Réponses: 2
    Dernier message: 26/04/2013, 08h33
  2. [AC-2007] Faire défiler les résultats d'une recherche par macro
    Par lillou_21 dans le forum Macros Access
    Réponses: 1
    Dernier message: 11/02/2013, 09h12
  3. [XL-2010] Macro qui recherche par mot clé
    Par Adrien13 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/10/2011, 16h38
  4. [XL-2003] Macro recherche par inputbox
    Par ptitgoud dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 27/07/2011, 16h49
  5. [XL-2007] Recherche de fichiers par macro
    Par tit-doudou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/06/2010, 09h24

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