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 un mot dans un texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut Rechercher un mot dans un texte
    Bonjour,

    Je cherche un bout de code qui permettrait de rechercher un mot en particulier dans un fichier .txt (60 Ko) et qui me copie colle la ligne entière correspondante au mot trouvé sur une feuille excel.

    Avez vous des idées svp ?

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je ferai :

    1°) lire les lignes une par une de ton fichier texte (voir tuto ci-dessous)

    https://warin.developpez.com/access/fichiers/#LII-D-2

    2°) ensuite je chercherai mon texte avec Instr() (voir touche F1)

    tu dis

    A+

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par SpaceX Voir le message
    Je cherche un bout de code qui permettrait de rechercher un mot en particulier dans un fichier .txt (60 Ko) et qui me copie colle la ligne entière correspondante au mot trouvé sur une feuille excel.
    Tu ouvres ton fichier texte avec un Workbooks.OpenText. https://msdn.microsoft.com/fr-fr/vba...t-method-excel
    Tu cherches ton mot avec la méthode Find avec le paramètre LookAt:=xlPart. https://msdn.microsoft.com/fr-fr/lib.../ff839746.aspx
    Pour prendre la ligne entière, tu utilises EntireRow. https://msdn.microsoft.com/fr-fr/lib.../ff836836.aspx
    Tu copies avec la méthode Copy de Range. https://msdn.microsoft.com/fr-fr/lib.../ff837760.aspx

  4. #4
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    Bonjour,

    Voici ce que j'ai fais jusqu'à présent :

    J'ouvre mon fichier texte avec ce genre de format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Workbooks.OpenText FileName:=NomFich, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, ConsecutiveDelimiter:=True, Tab:=True, Comma:=True, Space:=True
        DoEvents
    Ensuite, je colle le contenu de mon fichier texte sur une feuille Excel dans mon Workbook principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(1).Range("A1:M40").Copy _
        Destination:=Workbooks(NomFichPrincipal).Sheets("Feuil2").Range("A1")
        DoEvents
    Puis, sur la feuille excel ou j'ai copié mes informations : j'effectue une recherche du mot que je recherche dans un range de A1 à L50 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets("Feuil2")
        Set cel = .Range("A1:L50").Find("mot_que_je_cherche")
    'AJOUTER expression .EntireRow
    'Set plage = (Range).EntireRow
    Sauf, que j'ai un peu de mal à utiliser l'expression EntireRow dans mon programme.

    Enfin, je copie les lignes qui ont été trouvés sur la feuille 3 de mon workbook.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plage.Copy Destination:=Workbooks(ControlFile).Sheets("Feuil3").Range("M1")
        End With
    Pouvez vous m'aider pour l'utilisation de la fonction EntireRow svp ?

  5. #5
    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 re
    bonjour
    un exemple ceci envoie la ligne de la cellule trouvée dans l'autre sheets en colonne "A" premiere cellule libre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets("Feuil2")
        Set cel = .Range("A1:L50").Find("mot_que_je_cherche",lookin:=xlvalues)
    if not cel is nothing then cel.EntireRow.copy destination:=sheets(nom du sheets).cells(rows.count,1).end(xlup).offset(1,0)
    '...
    'etc...
    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

  6. #6
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonjour
    un exemple ceci envoie la ligne de la cellule trouvée dans l'autre sheets en colonne "A" premiere cellule libre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets("Feuil2")
        Set cel = .Range("A1:L50").Find("mot_que_je_cherche",lookin:=xlvalues)
    if not cel is nothing then cel.EntireRow.copy destination:=sheets(nom du sheets).cells(rows.count,1).end(xlup).offset(1,0)
    '...
    'etc...
    Bonjour,

    Merci pour le bout de programme, le problème c'est qu'il s’arrête au premier mot trouvé.

    Or je dois avoir plus de 200 ligne normalement.

  7. #7
    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 re
    re
    bonjour
    find et find next
    allez dans l'editeur VBE taper F1 et dans le moteur de recherche taper findnext ta un exemple tout pret
    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

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par SpaceX Voir le message
    Pouvez vous m'aider pour l'utilisation de la fonction EntireRow svp ?
    Dans le lien que je t'ai fourni, il y a la syntaxe, des explication et un exemple.
    Je ne vois pas comment faire mieux.

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

Discussions similaires

  1. [Toutes versions] Probleme dans une regle de recherche de mots dans un texte
    Par userjf2007 dans le forum Excel
    Réponses: 3
    Dernier message: 17/01/2012, 15h47
  2. Recherche de mots dans un texte
    Par Shargat dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/04/2009, 13h18
  3. Recherche des mots dans un texte
    Par psyrio dans le forum Langage
    Réponses: 1
    Dernier message: 27/02/2009, 12h15
  4. [RegEx] Recherche de mots dans un texte
    Par Dirty Harry dans le forum Langage
    Réponses: 3
    Dernier message: 15/01/2007, 17h29
  5. Rechercher un mot dans un texte
    Par BernardT dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/12/2005, 08h55

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