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
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
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
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" a écrit dans le message de 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
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" <ws@trol.com> a écrit dans le message de news:
OTrbeLFmJHA.3792@TK2MSFTNGP04.phx.gbl...
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
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" a écrit dans le message de 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
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
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
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
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" wrote in message
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.
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" <w...@trol.com> wrote in message
news:OTrbeLFmJHA.3792@TK2MSFTNGP04.phx.gbl...
> 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.
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" wrote in message
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.
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" wrote in message
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
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" <ws@trol.com> wrote in message
news:OTrbeLFmJHA.3792@TK2MSFTNGP04.phx.gbl...
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
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" wrote in message
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
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" a écrit dans le message de news: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" wrote in message
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
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" <nospam@sympatico.ca> a écrit dans le message de news:
OmzEmYNmJHA.1292@TK2MSFTNGP02.phx.gbl...
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" <ws@trol.com> wrote in message
news:OTrbeLFmJHA.3792@TK2MSFTNGP04.phx.gbl...
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
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" a écrit dans le message de news: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" wrote in message
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
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" wrote in message
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" a écrit dans le message de news: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" wrote in message
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
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" <ws@trol.com> wrote in message
news:eqDs7VemJHA.5980@TK2MSFTNGP06.phx.gbl...
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" <nospam@sympatico.ca> a écrit dans le message de news:
OmzEmYNmJHA.1292@TK2MSFTNGP02.phx.gbl...
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" <ws@trol.com> wrote in message
news:OTrbeLFmJHA.3792@TK2MSFTNGP04.phx.gbl...
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
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" wrote in message
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" a écrit dans le message de news: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" wrote in message
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
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" a écrit dans le message de news: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" wrote in message
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" a écrit dans le message de news: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" wrote in message
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
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" <nospam@sympatico.ca> a écrit dans le message de news:
OwyFEQfmJHA.1184@TK2MSFTNGP04.phx.gbl...
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" <ws@trol.com> wrote in message
news:eqDs7VemJHA.5980@TK2MSFTNGP06.phx.gbl...
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" <nospam@sympatico.ca> a écrit dans le message de news:
OmzEmYNmJHA.1292@TK2MSFTNGP02.phx.gbl...
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" <ws@trol.com> wrote in message
news:OTrbeLFmJHA.3792@TK2MSFTNGP04.phx.gbl...
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
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" a écrit dans le message de news: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" wrote in message
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" a écrit dans le message de news: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" wrote in message
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