Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 08h51   #1
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 125
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 125
Points : 19
Points : 19
Par défaut Chercher un string dans un fichier texte

Bonjour,

Sur une feuille excel (cellule B2), j'ai un mot (p.ex "bobo007").

Sur mon PC, j'ai aussi un fichier texte (C:\log.txt) qui comprend des milliers de lignes.
Une seule de ses lignes comprends le mot "bobo007" (p. ex "salut bobo007, ca va?")

J'aimerai donc, via excel et VBA, créer une macro qui me cherche dans le fichier texte la ligne exacte (le plus rapidement, vu la taille de mon fichier texte),pour ensuite l'enregistrer dans une variable. Une sorte de Ctrl + F en gros..

Pourriez-vous m'aiguiller ?
Merci d'avance.
apnw7931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 09h26   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 894
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 894
Points : 7 178
Points : 7 178
Bonjour,

A tester pour le temps d'exécution

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Dim strLigne As String
 
Open "C:\log.txt" For Input As #1
 
Do While Not EOF(1)
 
    Line Input #1, strLigne
    If InStr(1, strLigne, "bobo007") > 0 Then
        MsgBox strLigne
    End If
 
Loop
 
Close #1
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 09h32   #3
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 125
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 125
Points : 19
Points : 19
Merci pour ce code.
Néanmoins, avec un "Do While Not", il n'arrête pas la boucle après avoir trouvé l'occurence. Sauriez-vous comment faire alors ?
apnw7931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 09h39   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 894
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 894
Points : 7 178
Points : 7 178
Comme cela

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim strLigne As String
 
Open "C:\log.txt" For Input As #1
 
Do While Not EOF(1)
 
    Line Input #1, strLigne
    If InStr(1, strLigne, "bobo007") > 0 Then
        MsgBox strLigne
        Close #1
        Exit Sub
    End If
 
Loop
 
Close #1
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 09h47   #5
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 125
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 125
Points : 19
Points : 19
Je n'avais pas pensé au "Exit Sub" ...

Merci pour l'aide, et une excellente journée.
apnw7931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 13h32   #6
Expert Confirmé
 
Inscription : décembre 2007
Messages : 1 908
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 908
Points : 3 708
Points : 3 708
Un exit for aurait suffi, non? Il me semble qu'avec le exit sub, le fichier ouvert n'est pas fermé.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 13h41   #7
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 894
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 894
Points : 7 178
Points : 7 178
Citation:
Un exit for aurait suffi, non? Il me semble qu'avec le exit sub, le fichier ouvert n'est pas fermé.
un Exit For dans un boucle Do While !!

Le fichier est bien fermé via le close #1 avant de sortir
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h09   #8
Expert Confirmé
 
Inscription : décembre 2007
Messages : 1 908
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 908
Points : 3 708
Points : 3 708
ooops, j'ai dit une connerie.

Mais, pour le coup, on code 2 fois le close.... c'est ce genre de trucs qui me gène, je préfère rajouter un booleen pour sortir proprement. Question d'habitude, probablement.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h31.


 
 
 
 
Partenaires

Hébergement Web