A voir également:
- [VB6] fichier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir fichier .bin - Guide
17 réponses
byakhlefncr
Messages postés
260
Date d'inscription
vendredi 1 juillet 2005
Statut
Membre
Dernière intervention
11 septembre 2008
63
27 juil. 2005 à 13:51
27 juil. 2005 à 13:51
Salut,
J'ai essayé ton code mais il donne un résultat correct
38482 59555
10 19
38482 59565
10 187
38482 59576
10 221
J'ai essayé ton code mais il donne un résultat correct
38482 59555
10 19
38482 59565
10 187
38482 59576
10 221
salut byakhlefncr,
le resultat correct doit etre comme suit
38482,59555 10,19
38482,59565 10,187
38482,59576 10,221
le programme enléve les virgules je ne sais pourquoi?
merci pour ton aide
le resultat correct doit etre comme suit
38482,59555 10,19
38482,59565 10,187
38482,59576 10,221
le programme enléve les virgules je ne sais pourquoi?
merci pour ton aide
byakhlefncr
Messages postés
260
Date d'inscription
vendredi 1 juillet 2005
Statut
Membre
Dernière intervention
11 septembre 2008
63
27 juil. 2005 à 14:41
27 juil. 2005 à 14:41
Le problème est lié au ',' qui représente la séparation entre la fraction et la partie entiere
en remplaçant par '.' on obtient le résultat suivant :
38482,59555 10,19
38482,59565 10,187
38482,59576 10,221
Bonne chance
en remplaçant par '.' on obtient le résultat suivant :
38482,59555 10,19
38482,59565 10,187
38482,59576 10,221
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
byakhlefncr
Messages postés
260
Date d'inscription
vendredi 1 juillet 2005
Statut
Membre
Dernière intervention
11 septembre 2008
63
27 juil. 2005 à 15:34
27 juil. 2005 à 15:34
Tu pourras remplacer les "," en"." avec le bloc note dans le menu edition --> remplacer --> "," par "." --> Remplacer tout
Bonne cance
Bonne cance
Re
merci pour ton aide mais je ne pense pas que ca va resoudre le probléme car j'ai plusieurs fichiers txt à traiter
merci pour ton aide mais je ne pense pas que ca va resoudre le probléme car j'ai plusieurs fichiers txt à traiter
Utilisateur anonyme
27 juil. 2005 à 23:35
27 juil. 2005 à 23:35
Bonjour,
Suggestion :
Lupin
Suggestion :
Dim var1, var2 As Double Dim fic1, fic2 As Integer Dim ndata As Long Dim i, j As Integer fic1 = FreeFile Open "C:\Fichier2.txt" For Input As #fic1 fic2 = FreeFile Open "C:\toto.txt" For Output As #fic2 ndata = 1 Do While ((Not EOF(fic1)) And (ndata <= 200)) Line Input #fic1, var1 j = InStr(1, var1, " ", vbTextCompare) var2 = CDbl(Mid(var1, (j + 1))) var1 = CDbl(Mid(var1, 1, (j - 1))) Print #fic2, var1, var2 ndata = ndata + 1 Loop Close #fic1 Close #fic2
Lupin
bonjour lupin
le programme fonctionne bien mais il faut ajouter on error resume next avant
var2 = CDbl(Mid(var1, (j + 1)))
si non on aura une erreur de type non compatible
merci pour ton aide
le programme fonctionne bien mais il faut ajouter on error resume next avant
var2 = CDbl(Mid(var1, (j + 1)))
si non on aura une erreur de type non compatible
merci pour ton aide
Utilisateur anonyme
28 juil. 2005 à 21:38
28 juil. 2005 à 21:38
re:
Mon côté perfectionniste me pousse a te suggérer ceci :
Explication :
On m'a apprit que lorsque l'on effectue une lecture, on devrait
toujours lire en variant, car on ne sait pas toujours ce qui est à
lire. Une fois la lecture effectué, on la contrôle en effectuant
des conversions.
Est-ce que cela aura un sens pour toi ???
Lupin
Mon côté perfectionniste me pousse a te suggérer ceci :
Dim var1, tmp As Variant Dim varDBL1, varDBL2 As Double Dim fic1, fic2 As Integer Dim ndata As Long Dim i, j As Integer fic1 = FreeFile Open "C:\Fichier2.txt" For Input As #fic1 fic2 = FreeFile Open "C:\toto.txt" For Output As #fic2 ndata = 1 Do While ((Not EOF(fic1)) And (ndata <= 200)) Line Input #fic1, var1 j = InStr(1, var1, " ", vbTextCompare) tmp = Mid(var1, (j + 1)) varDBL2 = CDbl(tmp) tmp = Mid(var1, 1, (j - 1)) varDBL1 = CDbl(tmp) Print #fic2, var1, var2 ndata = ndata + 1 Loop Close #fic1 Close #fic2
Explication :
On m'a apprit que lorsque l'on effectue une lecture, on devrait
toujours lire en variant, car on ne sait pas toujours ce qui est à
lire. Une fois la lecture effectué, on la contrôle en effectuant
des conversions.
Est-ce que cela aura un sens pour toi ???
Lupin
salut lupin,
j'ai changer un peu le code mais ca ne marche pas a tu une idée?
merci
Dim var1, tmp As Variant
Dim varDBL1, varDBL2 As Double
Dim fic1, fic2 As Integer
Dim ndata As Long
Dim i, j As Integer
Dim tab1() As Double
Dim tab2() As Double
Dim somme1 As Double
Dim somme2 As Double
fic1 = FreeFile
Open "C:\Fichier2.txt" For Input As #fic1
fic2 = FreeFile
Open "C:\toto.txt" For Output As #fic2
ndata = 1
Do While ((Not EOF(fic1)) And (ndata <= 200))
Line Input #fic1, var1
j = InStr(1, var1, " ", vbTextCompare)
tmp = Mid(var1, (j + 1))
On Error Resume Next
varDBL2 = CDbl(tmp)
tmp = Mid(var1, 1, (j - 1))
varDBL1 = CDbl(tmp)
'Print #fic2, var1, var2
tab1(i) = varDBL1
tab2(i) = varDBL2
ndata = ndata + 1
i = i + 1
Loop
somme1 = 0
somme2 = 0
For i = 1 To 200
somme1 = somme1 + tab1(i)
somme2 = somme2 + tab2(i)
Next i
Print #fic2, somme1, somme2
Close #fic1
Close #fic2
j'ai changer un peu le code mais ca ne marche pas a tu une idée?
merci
Dim var1, tmp As Variant
Dim varDBL1, varDBL2 As Double
Dim fic1, fic2 As Integer
Dim ndata As Long
Dim i, j As Integer
Dim tab1() As Double
Dim tab2() As Double
Dim somme1 As Double
Dim somme2 As Double
fic1 = FreeFile
Open "C:\Fichier2.txt" For Input As #fic1
fic2 = FreeFile
Open "C:\toto.txt" For Output As #fic2
ndata = 1
Do While ((Not EOF(fic1)) And (ndata <= 200))
Line Input #fic1, var1
j = InStr(1, var1, " ", vbTextCompare)
tmp = Mid(var1, (j + 1))
On Error Resume Next
varDBL2 = CDbl(tmp)
tmp = Mid(var1, 1, (j - 1))
varDBL1 = CDbl(tmp)
'Print #fic2, var1, var2
tab1(i) = varDBL1
tab2(i) = varDBL2
ndata = ndata + 1
i = i + 1
Loop
somme1 = 0
somme2 = 0
For i = 1 To 200
somme1 = somme1 + tab1(i)
somme2 = somme2 + tab2(i)
Next i
Print #fic2, somme1, somme2
Close #fic1
Close #fic2
Utilisateur anonyme
29 juil. 2005 à 12:59
29 juil. 2005 à 12:59
rebonjour,
au premier coup d'oeil, il me semble que la variable i n'est
pas initialisé avant l'entrée dans la boucle while !
Et il te faudra effectuer un ReDim de la variable tab() dans
la boucle du while. La je quitte pour le boulot, mais ce soir
je pourrai te coder quelques lignes si tu n'y arrive pas.
Lupin
au premier coup d'oeil, il me semble que la variable i n'est
pas initialisé avant l'entrée dans la boucle while !
Et il te faudra effectuer un ReDim de la variable tab() dans
la boucle du while. La je quitte pour le boulot, mais ce soir
je pourrai te coder quelques lignes si tu n'y arrive pas.
Lupin
Utilisateur anonyme
29 juil. 2005 à 15:22
29 juil. 2005 à 15:22
re:
voilà, ce code fonctionne bien chez moi :-)
Lupin
voilà, ce code fonctionne bien chez moi :-)
Dim var1, tmp As Variant Dim varDBL1, varDBL2 As Double Dim fic1, fic2 As Integer Dim ndata As Long Dim i, j As Integer Dim tab1() As Double Dim tab2() As Double Dim somme1 As Double Dim somme2 As Double fic1 = FreeFile Open "C:\Fichier2.txt" For Input As #fic1 fic2 = FreeFile Open "C:\toto.txt" For Output As #fic2 ndata = 1 i = 1 Do While ((Not EOF(fic1)) And (ndata <= 200)) Line Input #fic1, var1 j = InStr(1, var1, " ", vbTextCompare) tmp = Mid(var1, (j + 1)) varDBL2 = CDbl(tmp) tmp = Mid(var1, 1, (j - 1)) varDBL1 = CDbl(tmp) 'Print #fic2, var1, var2 ReDim Preserve tab1(i) As Double ReDim Preserve tab2(i) As Double tab1(i) = varDBL1 tab2(i) = varDBL2 ndata = ndata + 1 i = i + 1 Loop somme1 = 0 somme2 = 0 For j = 1 To i somme1 = somme1 + tab1(j) somme2 = somme2 + tab2(j) Next j Print #fic2, somme1, somme2 Close #fic1 Close #fic2
Lupin
bonjour lupin
j'ai tester le code mais j'ai une erreur "13" type incompatible au niveau de varDBL2 = CDbl(tmp)
si je met on error resume next ya plus d'erreur mais il calcul pas
c'est bizare
merci
j'ai tester le code mais j'ai une erreur "13" type incompatible au niveau de varDBL2 = CDbl(tmp)
si je met on error resume next ya plus d'erreur mais il calcul pas
c'est bizare
merci
Utilisateur anonyme
4 août 2005 à 01:24
4 août 2005 à 01:24
Bonjour sadya,
En fait, je n'ai pas retesté le code puisqu'il fonctionne
bien avec l'énoncé que tu avais proposé.
Si le code plante, c'est a penser que la structure du fichier
n'est pas constante.
Ex.:
ici sur les lignes 2 et 4 il y a possibilité de "bug".
Je te recommande, de valider la structure du fichier
en effectuant plusieurs passage.
Ex.:
dans cet exemple, je vérifie la longueur minimum d'une ligne.
en cas d'erreur, la ligne et la valeur sont sauvegarder dans
le deuxième fichier.
en fait, c'est la façon de faire en SAS, on appelle cela
des observations, plutôt que de tout chambouler d'un
coup, on effectue plusieurs passages et à chaque passage
on effectue une "observation"/"opération", ... disons
une explication simple.
Plus loin que cela, il faudra après la lecture de la ligne,
valider la structure de chaque lignes,
... le nombre de caractères
... le nombre d'espaces
... le nombre de virgule
... etc...
Bon courage pour la suite, je demeure disponible si tu as
des questions.
N.B. Cette façon de travailler est une parmi tant d'autres,
quelqu'un d'autres aura peut-être de bonnes idées.
ex.: ouvrir le fichier texte avec EXCEL pour le formatter.
Lupin
En fait, je n'ai pas retesté le code puisqu'il fonctionne
bien avec l'énoncé que tu avais proposé.
Si le code plante, c'est a penser que la structure du fichier
n'est pas constante.
Ex.:
38482,59555 10,19 10,187 38482,59576 10,221 38482,59557 38482,59568 10,192
ici sur les lignes 2 et 4 il y a possibilité de "bug".
Je te recommande, de valider la structure du fichier
en effectuant plusieurs passage.
Ex.:
Const LngMin = 15 'Longueur minimum d'une ligne Dim var1, tmp As Variant Dim fic1, fic2 As Integer Dim i, j As Integer fic1 = FreeFile Open "C:\Fichier2.txt" For Input As #fic1 fic2 = FreeFile Open "C:\toto.txt" For Output As #fic2 i = 1 Do While ((Not EOF(fic1)) And (ndata <= 200)) Line Input #fic1, var1 j = Len(var1) If (j < LngMin) Then Print #fic2, i, var1 End If i = (i + 1) Loop Close #fic1 Close #fic2
dans cet exemple, je vérifie la longueur minimum d'une ligne.
en cas d'erreur, la ligne et la valeur sont sauvegarder dans
le deuxième fichier.
en fait, c'est la façon de faire en SAS, on appelle cela
des observations, plutôt que de tout chambouler d'un
coup, on effectue plusieurs passages et à chaque passage
on effectue une "observation"/"opération", ... disons
une explication simple.
Plus loin que cela, il faudra après la lecture de la ligne,
valider la structure de chaque lignes,
... le nombre de caractères
... le nombre d'espaces
... le nombre de virgule
... etc...
Bon courage pour la suite, je demeure disponible si tu as
des questions.
N.B. Cette façon de travailler est une parmi tant d'autres,
quelqu'un d'autres aura peut-être de bonnes idées.
ex.: ouvrir le fichier texte avec EXCEL pour le formatter.
Lupin