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 multiple d’occurrences dans des documents Word depuis un fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur packaging
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur packaging

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Recherche multiple d’occurrences dans des documents Word depuis un fichier Excel
    Bonjour à tous,

    Je travaille sur un fichier dont l'objectif est de synthétiser des infos contenues dans un dossier contenant une très longue liste de fichiers Word (1500). La chaîne de caractères que je recherche est du format [0-9]{3}-[0-9]{3} ou [0-9]{4}-[0-9]{3}. J'aimerais donc pouvoir récupérer toutes les instances de ces 2 types d'éléments, associées à chaque fois au nom du fichier qui la contient.

    Ma macro actuelle marche assez bien, mais ne donne en sortie que la première occurrence de ma chaîne, et recherche uniquement sur [0-9]{3}-[0-9]{3} ou [0-9]{4}-[0-9]{3}, mais pas les deux à la fois.

    J'avais donc imaginé une fonction (voir code ci-dessous) qui cherche la prochaine occurrence différente de la précédent, mais je n'arrive pas à la faire marcher (en commentaire dans la macro). Sachant qu'on peut avoir jusqu'à 12 occurrences, ce n'est pas envisageable de créer 12 fonctions. Peut-être une boucle qui cherche dans chaque document avant de passer au suivant, ou la fonction FindNext que je ne maitrise pas ? Je vous serai très reconnaissant de bien vouloir me donner quelques pistes pour faire marcher ma macro

    La macro complète est du bricolage, adaptée d'un modèle, donc ce n'est probablement pas optimisé, mais ça marche plus ou moins comme je veux !

    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
     
    Formule n+1 (par la fonction FIND)
            WApp.Selection.HomeKey unit:=6              
            WApp.Selection.Find.ClearFormatting         
            With WApp.Selection.Find
            .Text = "[0-9]{4}-[0-9]{3}"
            .MatchWildcards = True
            End With
     
            Set WSel_a = WApp.Selection
     
            WApp.Selection.Find.Execute                 
            If WSel_b = WSel_a Then
                ws.Cells(i, 3) = ""
                Else: ws.Cells(i, 3) = WSel_a
    End If
    En pièce jointe : une archive avec mon fichier Excel et 2 fichiers Word pour l'exemple
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Bonjour,

    comme sur l'autre site dédié à Excel, encore une erreur de casting de forum ‼ A déplacer donc dans le forum Word …




    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur packaging
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur packaging

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Marc,

    Je suis surpris que tu me conseilles de poster mon message dans la section Word, puisque la macro marche pour l'instant bien avec du VBA Excel. J'ai cependant créé une nouvelle discussion sur l'autre forum ici

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Excel ne te servant qu'à piloter Word et la problématique provenant de Word …
    Et c'est pourtant simple à vérifier dans le code dans le VBE d'Excel :
    placer le curseur sur HomeKey ou MatchWildcards par exemple puis appuyer sur la touche ,
    si l'instruction existe dans Excel, l'aide s'affichera sinon ce sera un message genre « Mot clé introuvable » !
    Car la méthode Find de Word n'est pas la méthode Find d'Excel …

    Donc avant de piloter côté Excel, effectuer d'abord un code fonctionnel directement dans Word ‼

    Maintenant tu peux avoir de la chance en obtenant une réponse sur Word dans un forum dédié à Excel
    mais cela n'a déjà pas été le cas sur l'autre site, si t'es vraiment pas pressé …

    _____________________________________________________________________________________________________
    La meilleure façon de ne pas avancer est de suivre une idée fixe. (Jacques Prévert)
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/04/2015, 15h18
  2. Réponses: 2
    Dernier message: 16/04/2015, 13h04
  3. Réponses: 33
    Dernier message: 22/08/2011, 14h33
  4. [XL-2003] Effacer des signets dans un document word depuis excel
    Par scoubi77 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/03/2010, 21h20
  5. Recherche de contenu dans des documents (Word, Excel, PDF ..)
    Par Morad ISSOULGHANE dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/02/2010, 12h48

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