Exploitation d'un fichier texte

Le
Calou
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois exploiter
sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV (pas de
;) et pour bien faire il faudrait que dans la première colonne j'indique le
nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne qui
commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian M
Le #18773141
Sans Vba, si toutes tes lignes sont de même format, Fichier Ouvrir
rechercher le fichier à convertir Entrée puis choisir si séparateurs ou
largeur fixe, puis déplacer les colonnes

"Calou"
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois exploiter
sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV (pas
de ;) et pour bien faire il faudrait que dans la première colonne
j'indique le nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne qui
commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe



Calou
Le #18774621
bonjour,
et merci d'avoir pris le temps de te pencher sur mon problème.
Toutes les lignes n'ont pas le même format et je pense être obligé de passer
par vba pour ne récupérer que le nom de la personne et la montant de la
ligne commencant par 856.
Ce sont des tableaux de paie avec le nom de la personne mais l'info de la
rubrique 856 je la retrouve parfois sur la 4e page.
Vous trouverez les premieres page de ce fichier à l'adresse suivante :
http://cjoint.com/?dbePOloZak

Un grand merci par avance.

Bonne journée.

"Christian M" news:
Sans Vba, si toutes tes lignes sont de même format, Fichier Ouvrir
rechercher le fichier à convertir Entrée puis choisir si séparateurs ou
largeur fixe, puis déplacer les colonnes

"Calou"
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois exploiter
sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV (pas
de ;) et pour bien faire il faudrait que dans la première colonne
j'indique le nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne qui
commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe








Mishell
Le #18777861
Bonjour.

Sub test()

f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
Cells(ligne, 1) = Trim(Mid(a, Len(ligneAgent) + 1))
End If
precedent = nom
End If


Wend
Close

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function


Mishell


"Calou" news:
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois exploiter
sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV (pas
de ;) et pour bien faire il faudrait que dans la première colonne
j'indique le nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne qui
commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe



philou36
Le #18778851
On 27 fév, 13:23, "Mishell"
Bonjour.

Sub test()

f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
 Line Input #1, a
 a = Trim(a)

  While Mid(a, 1, 1) = "!"
   a = Mid(a, 2)
  Wend
  a = Trim(a)

  If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

   Line Input #1, k
   k = Trim(k)
   montant = ExtraireDernierMontant(k)
   Cells(ligne, 2) = montant

  End If

 If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

  nom = Trim(a)
  If InStr(UCase(nom), suite) > 0 Then

   b = InStr(UCase(nom), suite)
   nom = Trim(Mid(nom, 1, b - 1))
  End If

  If UCase(nom) <> UCase(precedent) Then

   ligne = ligne + 1
   Cells(ligne, 1) = Trim(Mid(a, Len(ligneAgent) + 1))
  End If
  precedent = nom
 End If

Wend
Close

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function

Mishell

"Calou"
news:



> Bonjour,

> On vient de m'envoyer plus de 4 Mo de fichier texte que je dois exploit er
> sous Excel.
> J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
> exploite un fichier texte.

> Sub LitAvecInput()
>  ChDir ThisWorkbook.Path
>  nf = "essai.txt"
>  [A:A].ClearContents
>  Open nf For Input As #1
>  i = 1
>  Do While Not EOF(1)
>    Input #1, x
>    Cells(i, 1) = x
>    i = i + 1
>  Loop
>  Close #1
> End Sub

> Par contre les fichiers reçus ne sont pas des fichier au format CSV ( pas
> de ;) et pour bien faire il faudrait que dans la première colonne
> j'indique le nom de la personne située de la facon suivante :
> AGENT: 4101  H  MARTIN              BERNARD
> soit après le troisième espace (car la partie chiffrée peut êtr e sur 5
> caractères.)
> et indiquer dans la deuxième colonne le dernier montant de la ligne q ui
> commence par 586C.

> Cela vous semble t il réalisable  ?

> Par avance, un grand merci à vous pour votre précieuse aide.

> Bonne soirée à vous !!

> Philippe- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour,

Un GRAND GRAND merci à toi pour ta précieuse aide. Je vais tester tout
ça un peu plus tard. Merci encore.
Calou
Le #18788831
Bonjour,

C'est tout nickel ! mille fois merci pour avoir pris de ton temps pour me
donner la solution à mon problème !
Je vais juste me permettre (si je trouve) c'est de ne récupérer que le nom
prénom sans les quelques chiffres.

Philippe

"Mishell"
Bonjour.

Sub test()

f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
Cells(ligne, 1) = Trim(Mid(a, Len(ligneAgent) + 1))
End If
precedent = nom
End If


Wend
Close

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function


Mishell


"Calou" news:
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois exploiter
sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV (pas
de ;) et pour bien faire il faudrait que dans la première colonne
j'indique le nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne qui
commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe








Mishell
Le #18789441
Je te rajoute la routine ExtraireNomDeFamilleEtPrenom pour répondre à cette
dernière demande.

Sub test()
f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
strnom = Trim(Mid(a, Len(ligneAgent) + 1))
famille = ""
prenom = ""

Call ExtraireNomDeFamilleEtPrenom(strnom, famille, prenom)

Cells(ligne, 1) = famille & " " & prenom
End If
precedent = nom
End If


Wend
Close

End Sub

Sub ExtraireNomDeFamilleEtPrenom(lignenom, ByRef famille, ByRef prenom)


a = lignenom
b = InStr(a, " ")
a = Trim(Mid(a, b + 1))
b = InStr(a, " ")
a = Trim(Mid(a, b + 1))
b = InStr(a, " ")
famille = Mid(a, 1, b - 1)
prenom = Trim(Mid(a, b + 1))

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function



"Calou" news:
Bonjour,

C'est tout nickel ! mille fois merci pour avoir pris de ton temps pour me
donner la solution à mon problème !
Je vais juste me permettre (si je trouve) c'est de ne récupérer que le nom
prénom sans les quelques chiffres.

Philippe

"Mishell"
Bonjour.

Sub test()

f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
Cells(ligne, 1) = Trim(Mid(a, Len(ligneAgent) + 1))
End If
precedent = nom
End If


Wend
Close

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function


Mishell


"Calou" news:
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois
exploiter sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV (pas
de ;) et pour bien faire il faudrait que dans la première colonne
j'indique le nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne qui
commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe












Calou
Le #18790281
Bonjour,

Avant c'était deja extra, mais là je manque de vocabulaire. Même si je me
repète, mille merci à toi pour m'avoir aidé à ce point dans ce problème où
je ne voyais pas de solution.
N'y connaissant rien en VBA, je vais maintenant essayer de décomposer tes
macros. Bon dimanche à toi.

Philippe
"Mishell"
Je te rajoute la routine ExtraireNomDeFamilleEtPrenom pour répondre à
cette dernière demande.

Sub test()
f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
strnom = Trim(Mid(a, Len(ligneAgent) + 1))
famille = ""
prenom = ""

Call ExtraireNomDeFamilleEtPrenom(strnom, famille, prenom)

Cells(ligne, 1) = famille & " " & prenom
End If
precedent = nom
End If


Wend
Close

End Sub

Sub ExtraireNomDeFamilleEtPrenom(lignenom, ByRef famille, ByRef prenom)


a = lignenom
b = InStr(a, " ")
a = Trim(Mid(a, b + 1))
b = InStr(a, " ")
a = Trim(Mid(a, b + 1))
b = InStr(a, " ")
famille = Mid(a, 1, b - 1)
prenom = Trim(Mid(a, b + 1))

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function



"Calou" news:
Bonjour,

C'est tout nickel ! mille fois merci pour avoir pris de ton temps pour me
donner la solution à mon problème !
Je vais juste me permettre (si je trouve) c'est de ne récupérer que le
nom prénom sans les quelques chiffres.

Philippe

"Mishell"
Bonjour.

Sub test()

f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
Cells(ligne, 1) = Trim(Mid(a, Len(ligneAgent) + 1))
End If
precedent = nom
End If


Wend
Close

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function


Mishell


"Calou" news:
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois
exploiter sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV
(pas de ;) et pour bien faire il faudrait que dans la première colonne
j'indique le nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne qui
commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe
















Mishell
Le #18790291
Heureux d'avoir solutionné ton problème.

Bon dimanche.

Mishell

"Calou" news:
Bonjour,

Avant c'était deja extra, mais là je manque de vocabulaire. Même si je me
repète, mille merci à toi pour m'avoir aidé à ce point dans ce problème où
je ne voyais pas de solution.
N'y connaissant rien en VBA, je vais maintenant essayer de décomposer tes
macros. Bon dimanche à toi.

Philippe
"Mishell"
Je te rajoute la routine ExtraireNomDeFamilleEtPrenom pour répondre à
cette dernière demande.

Sub test()
f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
strnom = Trim(Mid(a, Len(ligneAgent) + 1))
famille = ""
prenom = ""

Call ExtraireNomDeFamilleEtPrenom(strnom, famille, prenom)

Cells(ligne, 1) = famille & " " & prenom
End If
precedent = nom
End If


Wend
Close

End Sub

Sub ExtraireNomDeFamilleEtPrenom(lignenom, ByRef famille, ByRef prenom)


a = lignenom
b = InStr(a, " ")
a = Trim(Mid(a, b + 1))
b = InStr(a, " ")
a = Trim(Mid(a, b + 1))
b = InStr(a, " ")
famille = Mid(a, 1, b - 1)
prenom = Trim(Mid(a, b + 1))

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function



"Calou" news:
Bonjour,

C'est tout nickel ! mille fois merci pour avoir pris de ton temps pour
me donner la solution à mon problème !
Je vais juste me permettre (si je trouve) c'est de ne récupérer que le
nom prénom sans les quelques chiffres.

Philippe

"Mishell"
Bonjour.

Sub test()

f = "C:test.txt"

ligneAgent = UCase("AGENT:")

ligneMontant = UCase("856")

suite = UCase("(suite)")

Open f For Input As 1

While Not EOF(1)
Line Input #1, a
a = Trim(a)

While Mid(a, 1, 1) = "!"
a = Mid(a, 2)
Wend
a = Trim(a)

If UCase(Mid(a, 1, Len(ligneMontant))) = ligneMontant Then

Line Input #1, k
k = Trim(k)
montant = ExtraireDernierMontant(k)
Cells(ligne, 2) = montant

End If

If UCase(Mid(a, 1, Len(ligneAgent))) = ligneAgent Then

nom = Trim(a)
If InStr(UCase(nom), suite) > 0 Then

b = InStr(UCase(nom), suite)
nom = Trim(Mid(nom, 1, b - 1))
End If

If UCase(nom) <> UCase(precedent) Then

ligne = ligne + 1
Cells(ligne, 1) = Trim(Mid(a, Len(ligneAgent) + 1))
End If
precedent = nom
End If


Wend
Close

End Sub

Function ExtraireDernierMontant(a)

Dim t As Variant
t = Split(a, "!")
ExtraireDernierMontant = Trim(t(UBound(t) - 1))

End Function


Mishell


"Calou" news:
Bonjour,

On vient de m'envoyer plus de 4 Mo de fichier texte que je dois
exploiter sous Excel.
J'ai trouvé sur le site de Jacques BOISGONTIER, une petite macro qui
exploite un fichier texte.

Sub LitAvecInput()
ChDir ThisWorkbook.Path
nf = "essai.txt"
[A:A].ClearContents
Open nf For Input As #1
i = 1
Do While Not EOF(1)
Input #1, x
Cells(i, 1) = x
i = i + 1
Loop
Close #1
End Sub

Par contre les fichiers reçus ne sont pas des fichier au format CSV
(pas de ;) et pour bien faire il faudrait que dans la première colonne
j'indique le nom de la personne située de la facon suivante :
AGENT: 4101 H MARTIN BERNARD
soit après le troisième espace (car la partie chiffrée peut être sur 5
caractères.)
et indiquer dans la deuxième colonne le dernier montant de la ligne
qui commence par 586C.

Cela vous semble t il réalisable ?

Par avance, un grand merci à vous pour votre précieuse aide.

Bonne soirée à vous !!

Philippe




















Publicité
Poster une réponse
Anonyme