OVH Cloud OVH Cloud

lecture de données dans un fichier texte

8 réponses
Avatar
Lilou_masquee
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui correspondait à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les résultats dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour dire tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne et des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les résultats
dans le fichier texte et les mette automatiquement dans les bonnes cases (qui
sont dans le même ordre que dans le fichier texte). Pour cela il faudrait
qu'il teste la date pour la comparer à celle du jour et et ne rentrer que les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee

8 réponses

Avatar
Daniel
Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui correspondait à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les résultats dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne et des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les résultats
dans le fichier texte et les mette automatiquement dans les bonnes cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il faudrait
qu'il teste la date pour la comparer à celle du jour et et ne rentrer que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee



Avatar
Lilou_masquee
Ca marche plutot bien, il me reste trois problèmes :
- En écrivant la date et l'heure il reste les guillemets, y a-t-il
un moyen de les enlever?
- La liste des résultats ne commence pas tout de suite, il y a
d'abord quelques lignes de commentaires, les en-têtes des colonnes et une
ligne vide. Comment faire pour que la lecture commence à la bonne ligne?
- Enfin, le programme ne marche bien que s'il y a une seule fois la
date du jour, mais et il est possible qu'elle apparaisse plusieurs fois et
dans ce cas la variable Tablo va etre modifiée sans s'inscrire dans excel.
Comment y remedier?



Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui correspondait à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les résultats dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne et des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les résultats
dans le fichier texte et les mette automatiquement dans les bonnes cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il faudrait
qu'il teste la date pour la comparer à celle du jour et et ne rentrer que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee








Avatar
Daniel
Ceci ?

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Ca marche plutot bien, il me reste trois problèmes :
- En écrivant la date et l'heure il reste les guillemets, y a-t-il
un moyen de les enlever?
- La liste des résultats ne commence pas tout de suite, il y a
d'abord quelques lignes de commentaires, les en-têtes des colonnes et une
ligne vide. Comment faire pour que la lecture commence à la bonne ligne?
- Enfin, le programme ne marche bien que s'il y a une seule fois la
date du jour, mais et il est possible qu'elle apparaisse plusieurs fois et
dans ce cas la variable Tablo va etre modifiée sans s'inscrire dans excel.
Comment y remedier?



Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui correspondait
à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les résultats
dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne et
des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le
fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les
résultats
dans le fichier texte et les mette automatiquement dans les bonnes
cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il
faudrait
qu'il teste la date pour la comparer à celle du jour et et ne rentrer
que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee










Avatar
Lilou_masquee
Non en fait il me retourne une incompatibilité de type sur l'instruction
Dat = Mid(Tablo(0), 2, 10) car Chaine n'est pas égal à :
"07/12/05";"12:15:49" etc... mais à une ligne de commentaire "client : ..."
du coup il n'y a pas de date dans cette ligne.
Y a-t-il un moyen de lui dire de commencer à lire à partir de la ligne 5 du
fichier.txt par exemple?

Pour ce qui est de l'écriture s'il y a plusieurs fois la même date j'ai
trouvé :

Dim a As Integer
a = 0
Open "C:Trucs à moiPresse Zwickessais .ergrésultats FW4.txt" For
Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
For i = 0 To UBound(Tablo)
Range("A1").Offset(a, i) = Tablo(i)
Next i
a = a + 1
Exit Do
End If
Loop


Ceci ?

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Ca marche plutot bien, il me reste trois problèmes :
- En écrivant la date et l'heure il reste les guillemets, y a-t-il
un moyen de les enlever?
- La liste des résultats ne commence pas tout de suite, il y a
d'abord quelques lignes de commentaires, les en-têtes des colonnes et une
ligne vide. Comment faire pour que la lecture commence à la bonne ligne?
- Enfin, le programme ne marche bien que s'il y a une seule fois la
date du jour, mais et il est possible qu'elle apparaisse plusieurs fois et
dans ce cas la variable Tablo va etre modifiée sans s'inscrire dans excel.
Comment y remedier?



Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui correspondait
à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les résultats
dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne et
des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le
fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les
résultats
dans le fichier texte et les mette automatiquement dans les bonnes
cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il
faudrait
qu'il teste la date pour la comparer à celle du jour et et ne rentrer
que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee















Avatar
Daniel
Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
For i = 1 To 4
Line Input #1, Chaine
Next i
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

"Lilou_masquee" a écrit dans le
message de news:
Non en fait il me retourne une incompatibilité de type sur l'instruction
Dat = Mid(Tablo(0), 2, 10) car Chaine n'est pas égal à :
"07/12/05";"12:15:49" etc... mais à une ligne de commentaire "client :
..."
du coup il n'y a pas de date dans cette ligne.
Y a-t-il un moyen de lui dire de commencer à lire à partir de la ligne 5
du
fichier.txt par exemple?

Pour ce qui est de l'écriture s'il y a plusieurs fois la même date j'ai
trouvé :

Dim a As Integer
a = 0
Open "C:Trucs à moiPresse Zwickessais .ergrésultats FW4.txt" For
Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
For i = 0 To UBound(Tablo)
Range("A1").Offset(a, i) = Tablo(i)
Next i
a = a + 1
Exit Do
End If
Loop


Ceci ?

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Ca marche plutot bien, il me reste trois problèmes :
- En écrivant la date et l'heure il reste les guillemets, y
a-t-il
un moyen de les enlever?
- La liste des résultats ne commence pas tout de suite, il y a
d'abord quelques lignes de commentaires, les en-têtes des colonnes et
une
ligne vide. Comment faire pour que la lecture commence à la bonne
ligne?
- Enfin, le programme ne marche bien que s'il y a une seule fois
la
date du jour, mais et il est possible qu'elle apparaisse plusieurs fois
et
dans ce cas la variable Tablo va etre modifiée sans s'inscrire dans
excel.
Comment y remedier?



Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans
le
message de news:
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui
correspondait
à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les
résultats
dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour
dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne
et
des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le
fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les
résultats
dans le fichier texte et les mette automatiquement dans les bonnes
cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il
faudrait
qu'il teste la date pour la comparer à celle du jour et et ne
rentrer
que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee

















Avatar
Lilou_masquee
Voilà, ca yest, j'ai un peu modifié, ca donne ceci :
Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long, a As Integer

Open "C:Trucs à moitotoessais résultats.txt" For Input As #1
Flag = False

On Error Resume Next

a = Range("F1").Value

Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Cells(a + 1, 1).Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Cells(a + 1, 1).Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Cells(a + 1, 1).Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Maintenant ca marche presque, il ne me reste plus que l'éternel problème
dans ce cas, les nombres stockés en texte. Y a-t-il un moyen de faire la
conversion automatiquement?
Je continue à chercher
Lilou_masquee




Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
For i = 1 To 4
Line Input #1, Chaine
Next i
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

"Lilou_masquee" a écrit dans le
message de news:
Non en fait il me retourne une incompatibilité de type sur l'instruction
Dat = Mid(Tablo(0), 2, 10) car Chaine n'est pas égal à :
"07/12/05";"12:15:49" etc... mais à une ligne de commentaire "client :
..."
du coup il n'y a pas de date dans cette ligne.
Y a-t-il un moyen de lui dire de commencer à lire à partir de la ligne 5
du
fichier.txt par exemple?

Pour ce qui est de l'écriture s'il y a plusieurs fois la même date j'ai
trouvé :

Dim a As Integer
a = 0
Open "C:Trucs à moiPresse Zwickessais .ergrésultats FW4.txt" For
Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
For i = 0 To UBound(Tablo)
Range("A1").Offset(a, i) = Tablo(i)
Next i
a = a + 1
Exit Do
End If
Loop


Ceci ?

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Ca marche plutot bien, il me reste trois problèmes :
- En écrivant la date et l'heure il reste les guillemets, y
a-t-il
un moyen de les enlever?
- La liste des résultats ne commence pas tout de suite, il y a
d'abord quelques lignes de commentaires, les en-têtes des colonnes et
une
ligne vide. Comment faire pour que la lecture commence à la bonne
ligne?
- Enfin, le programme ne marche bien que s'il y a une seule fois
la
date du jour, mais et il est possible qu'elle apparaisse plusieurs fois
et
dans ce cas la variable Tablo va etre modifiée sans s'inscrire dans
excel.
Comment y remedier?



Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans
le
message de news:
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui
correspondait
à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les
résultats
dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour
dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne
et
des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le
fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les
résultats
dans le fichier texte et les mette automatiquement dans les bonnes
cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il
faudrait
qu'il teste la date pour la comparer à celle du jour et et ne
rentrer
que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee






















Avatar
Lilou_masquee
Ca yest j'ai trouvé!! (C cool je me fais les questions et les réponses)
Bon vu le mal que j'ai eu à le faire je vous donne le truc ca servira peut
etre à quelqu'un d'autre.

J'ai modifié la fin du programme comme ca :
...
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
conversion
End Sub

Avec conversion définie comme suit :

Sub conversion()
Range("C1:D1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:=",", Replacement:="..."
Selection.Replace What:="...", Replacement:="."
End Sub

Et puis voilà

Merci Daniel pour ton aide précieuse
Lilou_masquee



Voilà, ca yest, j'ai un peu modifié, ca donne ceci :
Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long, a As Integer

Open "C:Trucs à moitotoessais résultats.txt" For Input As #1
Flag = False

On Error Resume Next

a = Range("F1").Value

Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Cells(a + 1, 1).Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Cells(a + 1, 1).Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Cells(a + 1, 1).Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Maintenant ca marche presque, il ne me reste plus que l'éternel problème
dans ce cas, les nombres stockés en texte. Y a-t-il un moyen de faire la
conversion automatiquement?
Je continue à chercher
Lilou_masquee




Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
For i = 1 To 4
Line Input #1, Chaine
Next i
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

"Lilou_masquee" a écrit dans le
message de news:
Non en fait il me retourne une incompatibilité de type sur l'instruction
Dat = Mid(Tablo(0), 2, 10) car Chaine n'est pas égal à :
"07/12/05";"12:15:49" etc... mais à une ligne de commentaire "client :
..."
du coup il n'y a pas de date dans cette ligne.
Y a-t-il un moyen de lui dire de commencer à lire à partir de la ligne 5
du
fichier.txt par exemple?

Pour ce qui est de l'écriture s'il y a plusieurs fois la même date j'ai
trouvé :

Dim a As Integer
a = 0
Open "C:Trucs à moiPresse Zwickessais .ergrésultats FW4.txt" For
Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
For i = 0 To UBound(Tablo)
Range("A1").Offset(a, i) = Tablo(i)
Next i
a = a + 1
Exit Do
End If
Loop


Ceci ?

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Ca marche plutot bien, il me reste trois problèmes :
- En écrivant la date et l'heure il reste les guillemets, y
a-t-il
un moyen de les enlever?
- La liste des résultats ne commence pas tout de suite, il y a
d'abord quelques lignes de commentaires, les en-têtes des colonnes et
une
ligne vide. Comment faire pour que la lecture commence à la bonne
ligne?
- Enfin, le programme ne marche bien que s'il y a une seule fois
la
date du jour, mais et il est possible qu'elle apparaisse plusieurs fois
et
dans ce cas la variable Tablo va etre modifiée sans s'inscrire dans
excel.
Comment y remedier?



Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans
le
message de news:
Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui
correspondait
à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les
résultats
dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré pour
dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui donne
et
des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le
fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les
résultats
dans le fichier texte et les mette automatiquement dans les bonnes
cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il
faudrait
qu'il teste la date pour la comparer à celle du jour et et ne
rentrer
que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee
























Avatar
Daniel
Bonjour.
Il n'y a pas de problème de nombre stocké en texte. Toutefois deux cas
peuvent se produire :
1. les cellules de destination sont formatées "texte", auquel cas, les
mettre en format "standard"
2. ton séparateur décimal est le point; dans ce cas, remplace :

Else
Cells(a + 1, 1).Offset(Ligne, i) = Tablo(i)
End If

par

Else
Tablo(i) = Replace(Tablo(i), ",", ".")
Cells(a + 1, 1).Offset(Ligne, i) = Tablo(i)
End If

Cordialement.
Daniel
"Lilou_masquee" a écrit dans le
message de news:
Voilà, ca yest, j'ai un peu modifié, ca donne ceci :
Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long, a As Integer

Open "C:Trucs à moitotoessais résultats.txt" For Input As #1
Flag = False

On Error Resume Next

a = Range("F1").Value

Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Cells(a + 1, 1).Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Cells(a + 1, 1).Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Cells(a + 1, 1).Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Maintenant ca marche presque, il ne me reste plus que l'éternel problème
dans ce cas, les nombres stockés en texte. Y a-t-il un moyen de faire la
conversion automatiquement?
Je continue à chercher
Lilou_masquee




Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
For i = 1 To 4
Line Input #1, Chaine
Next i
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

"Lilou_masquee" a écrit dans le
message de news:
Non en fait il me retourne une incompatibilité de type sur
l'instruction
Dat = Mid(Tablo(0), 2, 10) car Chaine n'est pas égal à :
"07/12/05";"12:15:49" etc... mais à une ligne de commentaire "client :
..."
du coup il n'y a pas de date dans cette ligne.
Y a-t-il un moyen de lui dire de commencer à lire à partir de la ligne
5
du
fichier.txt par exemple?

Pour ce qui est de l'écriture s'il y a plusieurs fois la même date j'ai
trouvé :

Dim a As Integer
a = 0
Open "C:Trucs à moiPresse Zwickessais .ergrésultats FW4.txt" For
Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
For i = 0 To UBound(Tablo)
Range("A1").Offset(a, i) = Tablo(i)
Next i
a = a + 1
Exit Do
End If
Loop


Ceci ?

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Dim Ligne As Long
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
For i = 0 To UBound(Tablo)
If i = 0 Then
Range("A1").Offset(Ligne, i) = Dat
ElseIf i = 1 Then
Range("A1").Offset(Ligne, i) = Mid(Tablo(i), 2, 8)
Else
Range("A1").Offset(Ligne, i) = Tablo(i)
End If
Next i
Flag = True
Ligne = Ligne + 1
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit dans
le
message de news:
Ca marche plutot bien, il me reste trois problèmes :
- En écrivant la date et l'heure il reste les guillemets, y
a-t-il
un moyen de les enlever?
- La liste des résultats ne commence pas tout de suite, il y
a
d'abord quelques lignes de commentaires, les en-têtes des colonnes
et
une
ligne vide. Comment faire pour que la lecture commence à la bonne
ligne?
- Enfin, le programme ne marche bien que s'il y a une seule
fois
la
date du jour, mais et il est possible qu'elle apparaisse plusieurs
fois
et
dans ce cas la variable Tablo va etre modifiée sans s'inscrire dans
excel.
Comment y remedier?



Bonjour.
Essaie :

Sub test()
Dim Chaine As String, Tablo, Dat As Date, Flag As Boolean
Open "e:donneesdanielmpfetoto.txt" For Input As #1
Flag = False
Do While Not EOF(1)
Line Input #1, Chaine
Tablo = Split(Chaine, ";")
Dat = Mid(Tablo(0), 2, 10)
If Dat = Date Then
Flag = True
Exit Do
End If
Loop
Close #1
If Flag = False Then
MsgBox "Date non trouvée"
Exit Sub
End If
For i = 0 To UBound(Tablo)
Range("A1").Offset(0, i) = Tablo(i)
Next i
End Sub

Cordialement.
Daniel
"Lilou_masquee" a écrit
dans
le
message de news:

Bonjour,
J'ai épluché les anciens poste et je n'ai rien trouvé qui
correspondait
à
mon cas.

Voilà, j'ai une machine qui fait des mesures et exporte les
résultats
dans
un fichier texte avec des séparateurs ";". Ex :
"07/07/2005";"14:34:49";655,6;4,18
D'un autre coté, j'ai un fichier excel, entièrement paramétré
pour
dire
tout
seul si la pièce est bonne en fonction des valeurs qu'on lui
donne
et
des
tolérances.
Actuellement c'est un opérateur qui rentre les résultats dans le
fichier
excel.

Ce que j'aimerai c'est que mon fichier excel aille chercher les
résultats
dans le fichier texte et les mette automatiquement dans les
bonnes
cases
(qui
sont dans le même ordre que dans le fichier texte). Pour cela il
faudrait
qu'il teste la date pour la comparer à celle du jour et et ne
rentrer
que
les
derniers essais faits.

Voilà, j'espère que vous pourrez m'aider en tout cas merci
Lilou_masquee