Extraire du texte d'un fichier txt [Résolu]

cs_cruzy 17 Messages postés dimanche 19 septembre 2004Date d'inscription 23 novembre 2006 Dernière intervention - 23 nov. 2006 à 10:32 - Dernière réponse :  ucfoutu
- 20 févr. 2015 à 06:22
bonjour à tous

je ne suis pas tres expérimenté en VBA excel, mais je souhaiterais faire ceci :

- j'ai un fichier texte "test.txt" contenant qqchose de ce type :
"blabla 123456 azerty"

- j'aimerais extraire de ce fichier le texte contenu entre "blabla" et "azerty" : soit "123465" et le placer dans une cellule excel

ca parait simple expliqué comme ca, mais pour un debutant, c'est pas si évident que ca

merci à celles et ceux qui pourraient m'aider dans cette recherche

A bientot

Cruzy
Afficher la suite 

Votre réponse

37 réponses

Meilleure réponse
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 23 nov. 2006 à 17:04
3
Merci
Plus court et plus simple pour la même chose:



Private Sub CommandButton1_Click()


Dim TaString As String
Dim TablString() As String
Dim keff As String
Dim sigma As String


Open "C:\Analyse.txt" For Input As #1


NbLignes = 0


While Not EOF(1)


Line Input #1, TaString


  If Left(TaString, 21) = "number of batch used:" Then


     TablString = Split(TaString, " ", -1, vbTextCompare)
     keff = TablString(6) & TablString(7) & TablString(8)
     sigma = TablString(10) & TablString(11) & TablString(12)
     MsgBox (keff & Chr(10) & sigma)


  End If


Wend


Close #1


End Sub

 Drikce 06

Merci drikce06 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de drikce06
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 23 nov. 2006 à 10:38
0
Merci
Salut, si tu fais une petite recherche sur le site tu n'auras aucun mal à trouver ce que tu cherches:
Sources pour lire un fichier text.
Et pour récupérer 123456 la fonction Split.

 Drikce 06
Commenter la réponse de drikce06
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 23 nov. 2006 à 10:39
0
Merci
Salut,
Je pense que tu devrais chercher un peu sur le site dans la section code tu devrais trouver assez rapidement, c'est bourré d'exemple.

Si tu ne trouve toujours pas , explique un peu mieux ou tu coinces
- Est ce que tu sais récupérer le contenu d'un fichier?
- Est ce que tu sais parcourir une chaine de caracteres?

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 23 nov. 2006 à 10:41
0
Merci
[auteurdetail.aspx?ID=786090 >Drikce06]

(Salut) => TU VAS PAS RECOMMENCER HEIN!!!!




@+: Ju£i?n


Pensez: Réponse acceptée
Commenter la réponse de jrivet
cs_cruzy 17 Messages postés dimanche 19 septembre 2004Date d'inscription 23 novembre 2006 Dernière intervention - 23 nov. 2006 à 10:44
0
Merci
> jrivet

non, je ne sais pas recuperer le contenu d'un fichier
et oui, je sais parcourir une chaine de caractere, mais uniquement quand ces caractere sont deja dans une cellule excel

si j'arrivais à copier coller mon fichier txt dans une cellule, y'aurais alors pu de probleme ;)

merci à vous, je vais parcourir la section codes

Cruzy
Commenter la réponse de cs_cruzy
cs_carvals 50 Messages postés lundi 20 novembre 2000Date d'inscription 23 janvier 2008 Dernière intervention - 23 nov. 2006 à 11:15
0
Merci
salut,
Un bon moyen lorsqu'on commence est d'utiliser l'enregistreur de macro pour voir comment c'est code..
Dans ton cas ouvre l'enregistreur puis
Data/ Get External data / Import Text file puis tu te laisses guider ensuite ca voir ce que ca donne en VBA et customise a ta guise...

good luck

carvals
Commenter la réponse de cs_carvals
cs_cruzy 17 Messages postés dimanche 19 septembre 2004Date d'inscription 23 novembre 2006 Dernière intervention - 23 nov. 2006 à 11:43
0
Merci
>carvals

chui vraiment une bille ... je trouve pas "data"
Commenter la réponse de cs_cruzy
cs_carvals 50 Messages postés lundi 20 novembre 2000Date d'inscription 23 janvier 2008 Dernière intervention - 23 nov. 2006 à 12:53
0
Merci
Ds la barre d'outils (excel non pas l'editeur VBA) il y a un onglet Data ou Donnees (je crois) si c'est en francais.

A+
carvals
Commenter la réponse de cs_carvals
cs_cruzy 17 Messages postés dimanche 19 septembre 2004Date d'inscription 23 novembre 2006 Dernière intervention - 23 nov. 2006 à 12:57
0
Merci
heuuuuuuuuuuuuuu

ouai, d'accord, ca je savais faire (quand meme) : j'aimerais faire ca en VBA en fait :D

parce que quand j'ai 100 fichiers à faire de cette facon, c'est pas tres rapide "à la main" !

merci quand meme
Commenter la réponse de cs_cruzy
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 23 nov. 2006 à 13:02
0
Merci
 Bonjour à tous....

Exemple avec la function split
chaine = "blabla 123456 azerty"
var = Split(chaine, " ")
MsgBox var(0) &vbCrLf& var(1) &vbCrLf& var(2)

[mk:@MSITStore:D:\Mes%20scripts%20vbs\SCRIPT56.CHM::/html/vsfctjoin.htm Join, fonction]

<!--Footer Start-->

Caractéristiques requises
[mk:@MSITStore:D:\Mes%20scripts%20vbs\SCRIPT56.CHM::/html/vtoriversioninformation.htm Version 2]

<!--NONSCROLLING BANNER END-->
Renvoie un tableau à une dimension commençant par zéro contenant le nombre spécifié de sous-chaînes.

Split( [ expression][,[ delimiter][,[ count][,[ compare]]]] )

Arguments
* expression : Expression de chaîne contenant des sous-chaînes et des séparateurs. Si l'argument expression est une chaîne de longueur nulle, la fonction Split renvoie un tableau vide, c'est-à-dire un tableau ne comportant ni éléments, ni données.
* delimiter : Facultatif. Caractère de chaîne utilisé pour identifier les limites de sous-chaîne. S'il est omis, le caractère espace (" ") est utilisé comme séparateur par défaut. Si l'argument delimiter est une chaîne de longueur nulle, un tableau à un élément contenant toute la chaîne expression est renvoyée.
* count : Facultatif. Nombre de sous-chaînes à renvoyer ; -1 indique que toutes les sous-chaînes sont renvoyées.
* compare : <dd>Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Reportez-vous à la section Paramètres.
Paramètres
L'argument compare peut prendre les valeurs suivantes :

Constante |Valeur |Description |----
vbBinaryCompare, 0, Effectue une comparaison binaire., ----
vbTextCompare, 1, Effectue une comparaison texte.

Notes
L'exemple ci-dessous utilise la fonction Split pour renvoyer un tableau à partir d'une chaîne. La fonction effectue une comparaison textuelle du délimiteur et renvoie toutes les sous-chaînes.

Dim MyString, MyArray, Msg
MyString = "VBScriptXestSuper!"
MyArray =
 Split( 
MyString
,
"x"
,
-1
,
1
)

' MyArray(0) contient "VBScript".
' MyArray(1) contient "est".
' MyArray(2) contient "super !".
Msg = MyArray(0) & " " & MyArray(1)
Msg = Msg & " " & MyArray(2)
MsgBox Msg

[mk:@MSITStore:D:\Mes%20scripts%20vbs\SCRIPT56.CHM::/html/vsfctjoin.htm Join, fonction]

<!--Footer Start-->

Caractéristiques requises
[mk:@MSITStore:D:\Mes%20scripts%20vbs\SCRIPT56.CHM::/html/vtoriversioninformation.htm Version 2]

<!--NONSCROLLING BANNER END-->
Renvoie un tableau à une dimension commençant par zéro contenant le nombre spécifié de sous-chaînes.

Split( [ expression][,[ delimiter][,[ count][,[ compare]]]] )

Arguments
* expression : Expression de chaîne contenant des sous-chaînes et des séparateurs. Si l'argument expression est une chaîne de longueur nulle, la fonction Split renvoie un tableau vide, c'est-à-dire un tableau ne comportant ni éléments, ni données.
* delimiter : Facultatif. Caractère de chaîne utilisé pour identifier les limites de sous-chaîne. S'il est omis, le caractère espace (" ") est utilisé comme séparateur par défaut. Si l'argument delimiter est une chaîne de longueur nulle, un tableau à un élément contenant toute la chaîne expression est renvoyée.
* count : Facultatif. Nombre de sous-chaînes à renvoyer ; -1 indique que toutes les sous-chaînes sont renvoyées.
* compare : <dd>Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Reportez-vous à la section Paramètres.
Paramètres
L'argument compare peut prendre les valeurs suivantes :

Constante |Valeur |Description |----
vbBinaryCompare, 0, Effectue une comparaison binaire., ----
vbTextCompare, 1, Effectue une comparaison texte.

Notes
L'exemple ci-dessous utilise la fonction Split pour renvoyer un tableau à partir d'une chaîne. La fonction effectue une comparaison textuelle du délimiteur et renvoie toutes les sous-chaînes.

Dim MyString, MyArray, Msg
MyString = "VBScriptXestSuper!"
MyArray =
 Split( 
MyString
,
"x"
,
-1
,
1
)

' MyArray(0) contient "VBScript".
' MyArray(1) contient "est".
' MyArray(2) contient "super !".
Msg = MyArray(0) & " " & MyArray(1)
Msg = Msg & " " & MyArray(2)
MsgBox Msg

jean-marc
Commenter la réponse de cs_JMO
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 23 nov. 2006 à 13:04
0
Merci
 Re,

Carton rouge JMO pour la non maitrise du copier/coller.......
Sorry,
jean-marc
Commenter la réponse de cs_JMO
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 23 nov. 2006 à 13:19
0
Merci
'Ceci suggère que ce que tu veux récupérer est la première ligne du fichier texte


Dim TaString As String
Dim TablString() As String


Open "C:\Analyse.txt" For Input As #1


Input #1, TaString


TablString = Split(TaString, " ")
TaString = TablString(1)


Close #1

 Drikce 06
Commenter la réponse de drikce06
cs_cruzy 17 Messages postés dimanche 19 septembre 2004Date d'inscription 23 novembre 2006 Dernière intervention - 23 nov. 2006 à 13:22
0
Merci
merci jean-marc

ca, je sais le faire, mais quand le texte est deja dans une cellule ou feuille excel

mais qu'en est-il lorsque ce texte est placé dans un fichier txt distinct

merci
Commenter la réponse de cs_cruzy
cs_cruzy 17 Messages postés dimanche 19 septembre 2004Date d'inscription 23 novembre 2006 Dernière intervention - 23 nov. 2006 à 13:24
0
Merci
ah, merci Drikce 06

la ca m'aide vraiment, je vais bidouiller ca

qu'en est-il si je veux que VBA me recherche la ligne où est situé mon texte recherché ?

merci encore
Commenter la réponse de cs_cruzy
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 23 nov. 2006 à 13:37
0
Merci
Si tu connais le numéros de la ligne remplace 1 par ce numéro.

 Drikce 06
Commenter la réponse de drikce06
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 23 nov. 2006 à 13:39
0
Merci
euh!!!! désolé j'ai dit une bétise!!! je regarde!

 Drikce 06
Commenter la réponse de drikce06
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 23 nov. 2006 à 13:51
0
Merci
Salut,

Avec ceci, tu devrais déjà y voir plus clair.




Dim s As String
Dim tablo() As String

Open "monfichier.txt" For Input As #1
 While not EOF(1) ' Tant qu'on est pas au bout du fichier
  Line Input #1,s ' Lecture de chaque ligne
  tablo = Split(s," ") ' découpage de la ligne suivant les espaces
  MsgBox "La donnée recherchée sur cette ligne est " & tablo(1)
 Wend
Close #1







Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Commenter la réponse de econs
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 23 nov. 2006 à 14:09
0
Merci
Sinon petite variante (sans le split) qui stock toutes les lignes dans un tableau : c'est plus long mais comme je cherche depuis tout à l'heure je le met comme même, car en fait j'avais jamais fais ça en VBA (ou VB6). En tout cas, comme quoi les recherches sur le site sont fructueuses!


Dim NbLignes As Integer


Private Sub CommandButton1_Click()


Dim TaString As String
Dim TablString()


compte_ligne ("C:\Analyse.txt")


Open "C:\Analyse.txt" For Input As #1


ReDim Preserve TablString(NbLignes)


For i = 1 To NbLignes
Line Input #1, TaString
TablString(i) = TaString
Next i


Close #1


For i = 1 To NbLignes
MsgBox TablString(i)
Next i


End Sub


Sub compte_ligne(Chemin_complet As String)


On Error GoTo ANNULER


Open Chemin_complet For Input As #1


While Not EOF(1)
Line Input #1, texte
NbLignes = NbLignes + 1
Wend


Close #1


ANNULER:


End Sub





 Drikce 06
Commenter la réponse de drikce06
cs_cruzy 17 Messages postés dimanche 19 septembre 2004Date d'inscription 23 novembre 2006 Dernière intervention - 23 nov. 2006 à 15:17
0
Merci
bon merci bcp les gars, je crois que je suis pas fait pour le VBA, j'y arrive trop pas

je retourne à mon flash
Commenter la réponse de cs_cruzy
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 23 nov. 2006 à 15:27
0
Merci
Si tu crée un userfrom avec un bouton de commande et que tu fais un copier coller de mon code en remplaçant  ("C:\Analyse.txt") par le chemin de ton fichier texte, tu auras ce que tu veux. De même avec le code de econs!

 Drikce 06
Commenter la réponse de drikce06

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.