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 :

Difficulté bouclage VBA recherche de mots dans fichiers word


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    stagiaire
    Inscrit en
    Mai 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2022
    Messages : 13
    Par défaut Difficulté bouclage VBA recherche de mots dans fichiers word
    Bonjour,
    Je suis actuellement en train de créer un fichier Excel visant à la recherche de mots dans des fichiers Word à partir de VBA.
    J'ai créer une liste de case à cocher dans un userform lors du lancement de la recherche visant à être plus précis dans la recherche.
    Mon programme fonctionne, mais seulement pour 1 fichier à la fois. J'aimerai pouvoir boucler le programme afin que la procédure se fasse pour plusieurs fichiers word et que les informations (pages, occurences,nom du fichier) se rangent dans le tableau l'un à la suite des autres (sans devoir à chaque fois spécifier la cellule exacte).
    Je ne sais pas si cela est clair pour vous, c'est pour cela que je vous ai joint mon fichier Excel.
    Merci d'avance pour votre aide
    Recherche_fichiers_externe.xlsm

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Une façon de faire la recherche des mots sur une série de documents contenus dans un dossier. A comprendre et adapter.
    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
    Option Explicit
     
    '--- référence nécessaire: Microsoft Word xx.x Object Library
     
    Sub Recherche()
        Dim kR As Long                  '--- n° ligne du tableau
        Dim aFamille() As String        '--- les noms des familles (max 10)
        Dim aMot() As String            '--- les mots à chercher (max 10)
        Dim sDossier As String          '--- dossier contenant les documents à traiter
        Dim sDossierFamille As String
        Dim sFichier As String
        Dim i As Long, j As Long, n As Long
        Dim WordApp As Object, WordDoc As Object
        '---
        kR = 9
        aFamille = Split(Range("F9"), ";")
        aMot = Split(Range("G9"), ";")
        sDossier = ThisWorkbook.Path                    '--- à adapter
        Set WordApp = CreateObject("Word.Application")
        '---
        For i = 0 To UBound(aFamille)
            Range("F" & kR) = Trim(aFamille(i))
            If Range("F" & kR) <> "" Then
                sDossierFamille = sDossier & "\"        '--- & aFamille(i) & "\"       '--- à adapter
                sFichier = Dir(sDossierFamille & "*.docx")
                While sFichier <> ""
                    Range("H" & kR) = sFichier
                    Set WordDoc = WordApp.Documents.Open(Filename:=sDossierFamille & sFichier, ReadOnly:=True)
                    For j = 0 To UBound(aMot)
                        n = 0
                        WordApp.Selection.HomeKey Unit:=wdStory     '--- retourne au début du document
                        With WordDoc.Content.Find
                            .Text = Trim(aMot(j))                   '--- supprime les espaces inutiles en début et fin
                            If .Text <> "" Then
                                .Forward = True
                                .MatchWholeWord = True  '--- à vérifier
                                While .Execute
                                    If .Found Then
                                        n = n + 1
                                        Range("I" & kR) = Range("I" & kR) & .Text & ": page " & WordApp.Selection.Information(1) & vbLf
                                    End If
                                Wend
                                'Range("I" & kR) = Range("I" & kR) & .Text & ":" & n & "; "
                            End If
                        End With
                    Next j
                    WordDoc.Close
                    sFichier = Dir
                    kR = kR + 1
                Wend
            End If
        Next i
        WordApp.Quit
        Set WordDoc = Nothing
        Set WordApp = Nothing
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Femme Profil pro
    stagiaire
    Inscrit en
    Mai 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2022
    Messages : 13
    Par défaut
    Bonjour,
    Merci pour votre aide, je ne sais pas pourquoi mais il n'arrive pas à me lancer le programme lorsque je mets le chemin dossier et le nom du fichier?


    Nom : Capture d’écran 2022-05-06 092417.png
Affichages : 145
Taille : 25,5 Ko

  4. #4
    Membre averti
    Femme Profil pro
    stagiaire
    Inscrit en
    Mai 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2022
    Messages : 13
    Par défaut
    Okay C'est bon tout fonctionne,
    J'aimerai juste aussi insérer le lien du document dans "recherche avancée".
    Et que quand je sélectionne une famille, il aille faire la recherche dans un dossier spécifique?
    Avez-vous une idée de comment faire?
    Merci d'avance

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,
    Et que quand je sélectionne une famille, il aille faire la recherche dans un dossier spécifique?
    Pour cela il faut connaitre les noms de ces dossiers. C'était déjà approché à la ligne 24 du code déjà présenté.

    Ci-attaché, une version qui fait la recherche sans s'occuper de la casse (lettre en majuscule = lettre en minuscule) et qui remplace les voyelles par des ? (joker) cela pour ne pas distinguer les voyelles accentuées des voyelles non accentuées. Ainsi par exemple: REVETEMENT = Revêtement = revêtement = revètement.

    Cordialement.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Femme Profil pro
    stagiaire
    Inscrit en
    Mai 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2022
    Messages : 13
    Par défaut
    C'est bizarre car lorsque je mets le nom du dossier dans lequel j'aimerai qu'il fasse la recherche, il continue tout de même à effectuer la recherche dans le dossier où se situe le fichier Excel. J'aimerai qu'il fasse une recherche dans un dossier spécifique à une famille, et si je sélectionne une autre famille, qu'il aille dans un autre dossier.
    Et du coup pour insérer un lien pdf à chaque ligne du tableau? Une idée de comment faire?
    Cordialement,

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/05/2014, 23h19
  2. [WD-2010] Recherche de mots dans un Word
    Par garniea dans le forum VBA Word
    Réponses: 2
    Dernier message: 29/04/2014, 16h09
  3. Recherche de texte dans fichier word inclus
    Par Albanov dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/03/2012, 14h56
  4. [XL-2003] Recherche un mot dans un autre fichier excel avec vba
    Par alaoui_nizar dans le forum Excel
    Réponses: 5
    Dernier message: 19/04/2010, 17h37
  5. Recherche d'un mot dans fichiers JAVA
    Par arsenik7 dans le forum Langage
    Réponses: 2
    Dernier message: 02/08/2006, 11h25

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