"LE TROLL" a écrit
| Salut, là ta fonction est explicite :o)
La fonction EOF est tout aussi explicite (apparement pas
pour tout le monde)
EOF = End-Of-File = Fin-De-Fichier
Re- ;-)
Pascal B.
"LE TROLL" a écrit
| Salut, là ta fonction est explicite :o)
La fonction EOF est tout aussi explicite (apparement pas
pour tout le monde)
EOF = End-Of-File = Fin-De-Fichier
Re- ;-)
Pascal B.
"LE TROLL" a écrit
| Salut, là ta fonction est explicite :o)
La fonction EOF est tout aussi explicite (apparement pas
pour tout le monde)
EOF = End-Of-File = Fin-De-Fichier
Re- ;-)
Pascal B.
Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
LE TROLL a écrit, le 23/03/2005 12:13 :Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
J'ai parlé d'ignominie ?
Erreur, je dirais ... Si il s'agit de transcrire trois
lignes en entrée par une ligne en sortie, en faisant le
même nombre d'écritures que de lectures, logiquement il y
a un os.
Mais c'est vrai qu'on peut moduler ce que je viens de
dire, de deux façons.
D'une part, tu dis que "lecture" peut regrouper un
ensemble d'opérations de lecture. Soit, c'est au niveau
clarté que ça me paraissait pêcher, mais à ce niveau il
semblerait que je n'aie pas été le meilleur.
D'autre part, on peut faire comme dit Jean-Marc, écrire
directement dans le tampon de sortie, et déclencher la
véritable opération d'écriture une fois que tout est prêt,
par Print #numfichiersortie, ""
c'est-à-dire sans point-virgule à la fin.
Finalement, l'essentiel reste de bien se comprendre.
Ingrid nous a dit qu'elle avait un prof : si il fait bien
son boulot, la question va finir par être d'une grande
limpidité.
LE TROLL a écrit, le 23/03/2005 12:13 :
Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
J'ai parlé d'ignominie ?
Erreur, je dirais ... Si il s'agit de transcrire trois
lignes en entrée par une ligne en sortie, en faisant le
même nombre d'écritures que de lectures, logiquement il y
a un os.
Mais c'est vrai qu'on peut moduler ce que je viens de
dire, de deux façons.
D'une part, tu dis que "lecture" peut regrouper un
ensemble d'opérations de lecture. Soit, c'est au niveau
clarté que ça me paraissait pêcher, mais à ce niveau il
semblerait que je n'aie pas été le meilleur.
D'autre part, on peut faire comme dit Jean-Marc, écrire
directement dans le tampon de sortie, et déclencher la
véritable opération d'écriture une fois que tout est prêt,
par Print #numfichiersortie, ""
c'est-à-dire sans point-virgule à la fin.
Finalement, l'essentiel reste de bien se comprendre.
Ingrid nous a dit qu'elle avait un prof : si il fait bien
son boulot, la question va finir par être d'une grande
limpidité.
LE TROLL a écrit, le 23/03/2005 12:13 :Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
J'ai parlé d'ignominie ?
Erreur, je dirais ... Si il s'agit de transcrire trois
lignes en entrée par une ligne en sortie, en faisant le
même nombre d'écritures que de lectures, logiquement il y
a un os.
Mais c'est vrai qu'on peut moduler ce que je viens de
dire, de deux façons.
D'une part, tu dis que "lecture" peut regrouper un
ensemble d'opérations de lecture. Soit, c'est au niveau
clarté que ça me paraissait pêcher, mais à ce niveau il
semblerait que je n'aie pas été le meilleur.
D'autre part, on peut faire comme dit Jean-Marc, écrire
directement dans le tampon de sortie, et déclencher la
véritable opération d'écriture une fois que tout est prêt,
par Print #numfichiersortie, ""
c'est-à-dire sans point-virgule à la fin.
Finalement, l'essentiel reste de bien se comprendre.
Ingrid nous a dit qu'elle avait un prof : si il fait bien
son boulot, la question va finir par être d'une grande
limpidité.
Je vais voir sur l'heure et le champ???
-------
Je vais voir sur l'heure et le champ???
-------
Je vais voir sur l'heure et le champ???
-------
Hi,
oufff c'est moi qui ai lancé tout ce debat...
D'abord je remercie tout le monde et sans exception pour les reponses
données ( Gloops, le troll, pascal b. et jean-marc...).
Jean-marc, effectivement ton code fonctionne mais il y a un probleme. Je
vais essayer d'être claire et de bien m'exprimer. D'abord partons du code
jean-marc:
Tu as pris comme hypthèse que dans le fichier il y a une suite logique de
à Z. J'ai oublié de préciser que c'etait pas le cas. je vais vous donner
l'exercice qui va me rendre folle à la néerlandaise et si j'arrive pas à
resoudre je vais prendre le thalys pour passer ma journée à fumer dans un
cofee shop à Amsterdam...lol....
voilà:
J'ai un fichier Entrée structurée en ligne de la façon suivante:
xxx4528xxxxxx
:A:Ingrid
:B:28Ans
:R:Debutante
:D:01/01/2005 Dîplome
:D:01/02/2005 Demenagement
:A:Jacques
:B:40Ans
:R:Expert
:D:01/02/2005 Dîplome
:D:01/03/2005 Demenagement
xxxxx352xxxxxxxxxxxxxx
Ce fichier je veux le transformer en fichier sortie de la façon suivante:
Ingrid;28ans;Debutante;01/01/200 Dîplome
Ingrrid;28ans;Debutante;01/02/2005 Demenagement
Jacques;40Ans;Expert;01/02/2005 Dîplome
Jacques;40Ans;Expert;01/03/2005 Demenagement
Donc on peut conclure le suivant:
1- Il s'agit pas d'une suite logique de A à Z
2- dans le fichier Entrée, à mon avis la clé c'est le D parceque qd il y a
un second D pour la meme personne (comme dans l'exemple), il saute une
il reprend les infos A, B et R et il rajoute une nouvelle ligne.
Notez chers amis que j'arrive à le faire sous excel car je peux bouger
ligne et les cells plus facilement mais mon prof qui me torture veut qu'on
fasse sous excel....
Est ce que vous pouvez m'aider ?
Kisses à tout le monde
Ingrid
"jean-marc" wrote:
> "Ingrid" wrote in message
> news:
> > gloops,
> > ça marche mais ça répond pas completement à mon probleme et ceci pour
> > raison suivante:
> > 1-Parce que dans mon exemple on a fixé 3 lignes comme hypothèse et
> en
> > avait x lignes, on fait comment?
> > je te donne un exercice avec ton code un peu retouché par des
> > voilà j'ai un fichier sortie dans lequel il y a les informations
> suivantes:
>
> Hello,
>
> voici une fonction qui résoud ton problème, complètement cette fois je
> pense:
> J'ai testé avec exactement le fichier que tu donnais, et le résultat
> est:
>
> Ingrid;28ans;Dutch;Sympa;Amatrice en Informatique
> Gloops;32ans;Français;Specialiste en Informatique
> Jacques;50ans;German;Insuportable;Nul en Informatique
>
> Les hyppothèses sont qu'un champ commence par "A" - "Z"
> Toutes les autres lignes sont ignorées
> On peut avoir autant de champs que l'on veut (MAX_FIELDS)
>
> Voici le code:
>
> '----------------------------------------
> Private Const MAX_FIELDS = 50
>
> Private Sub TransformFile(inputFile As String, outputFile As String)
> Dim inp As Integer, outp As Integer
> Dim s As String
> Dim fields(MAX_FIELDS) As String
> Dim nb_fields As Integer
> Dim i As Integer
> Dim first_car As String
>
> On Error GoTo err_TF
>
> inp = FreeFile
> Open inputFile For Input As #inp
> outp = FreeFile
> Open outputFile For Output As #outp
> While Not EOF(inp)
> Line Input #inp, s
> first_car = Mid$(s, 1, 1)
> If (first_car >= "A") And (first_car <= "Z") Then
> ' a new valied field
> ' is it a "A" (first field)
> If first_car = "A" Then
> ' 2 cases here
> ' a complete record is ready to be read or it's the
> one
> If nb_fields = 0 Then
> ' ok its a new record - just store it
> nb_fields = nb_fields + 1
> ' keep only from character position 3, to remove
> "Z:", etc.
> fields(nb_fields) = Mid$(s, 3)
> Else
> ' whowhowho ! we got a complete record!
> ' let's write it
> For i = 1 To nb_fields
> Print #outp, fields(i);
> If i <> nb_fields Then
> Print #outp, ";";
> End If
> Next i
> Print #outp, "" ' just to insert a Carriage
> Return/LineFeed
> ' Now restore field count
> nb_fields = 1
> ' store the beginning of this new record
> fields(nb_fields) = Mid$(s, 3)
> End If
> Else
> ' ok just add a field in the array
> nb_fields = nb_fields + 1
> ' keep only from character position 3, to remove "A:",
> etc.
> fields(nb_fields) = Mid$(s, 3)
> End If
> Else
> ' nothing to do, we just ignore the ligne
> End If
> Wend
> ' end of file
> ' do we have somethiong to write ?
> If nb_fields > 0 Then
> ' ok, just write it
> For i = 1 To nb_fields
> Print #outp, fields(i);
> If i <> nb_fields Then
> Print #outp, ";";
> End If
> Next i
> Print #outp, "" ' just to insert a Carriage Return/LineFeed
> End If
> ' That's it :-)
> Close #inp
> Close #outp
> end_TF:
> Exit Sub
> err_TF:
> MsgBox "error : " & Err.Description & " (" & Err.Number & ")"
> Resume end_TF
> End Sub
>
> ' ----------------- Sample call -------------------
> Private Sub Command1_Click()
> Call TransformFile("D:JMDvpmt#VBng376data.txt",
> "D:JMDvpmt#VBng376dataOUT.txt")
> End Sub
>
> Bonne programmation!
>
> --
> Jean-marc
> "There are only 10 kind of people
> those who understand binary and those who don't."
>
>
>
>
Hi,
oufff c'est moi qui ai lancé tout ce debat...
D'abord je remercie tout le monde et sans exception pour les reponses
données ( Gloops, le troll, pascal b. et jean-marc...).
Jean-marc, effectivement ton code fonctionne mais il y a un probleme. Je
vais essayer d'être claire et de bien m'exprimer. D'abord partons du code
jean-marc:
Tu as pris comme hypthèse que dans le fichier il y a une suite logique de
à Z. J'ai oublié de préciser que c'etait pas le cas. je vais vous donner
l'exercice qui va me rendre folle à la néerlandaise et si j'arrive pas à
resoudre je vais prendre le thalys pour passer ma journée à fumer dans un
cofee shop à Amsterdam...lol....
voilà:
J'ai un fichier Entrée structurée en ligne de la façon suivante:
xxx4528xxxxxx
:A:Ingrid
:B:28Ans
:R:Debutante
:D:01/01/2005 Dîplome
:D:01/02/2005 Demenagement
:A:Jacques
:B:40Ans
:R:Expert
:D:01/02/2005 Dîplome
:D:01/03/2005 Demenagement
xxxxx352xxxxxxxxxxxxxx
Ce fichier je veux le transformer en fichier sortie de la façon suivante:
Ingrid;28ans;Debutante;01/01/200 Dîplome
Ingrrid;28ans;Debutante;01/02/2005 Demenagement
Jacques;40Ans;Expert;01/02/2005 Dîplome
Jacques;40Ans;Expert;01/03/2005 Demenagement
Donc on peut conclure le suivant:
1- Il s'agit pas d'une suite logique de A à Z
2- dans le fichier Entrée, à mon avis la clé c'est le D parceque qd il y a
un second D pour la meme personne (comme dans l'exemple), il saute une
il reprend les infos A, B et R et il rajoute une nouvelle ligne.
Notez chers amis que j'arrive à le faire sous excel car je peux bouger
ligne et les cells plus facilement mais mon prof qui me torture veut qu'on
fasse sous excel....
Est ce que vous pouvez m'aider ?
Kisses à tout le monde
Ingrid
ingridnlfr@hotmail.com
"jean-marc" wrote:
> "Ingrid" <Ingrid@discussions.microsoft.com> wrote in message
> news:EA1324FE-7D06-4335-98AC-CDFDE0F575D2@microsoft.com...
> > gloops,
> > ça marche mais ça répond pas completement à mon probleme et ceci pour
> > raison suivante:
> > 1-Parce que dans mon exemple on a fixé 3 lignes comme hypothèse et
> en
> > avait x lignes, on fait comment?
> > je te donne un exercice avec ton code un peu retouché par des
> > voilà j'ai un fichier sortie dans lequel il y a les informations
> suivantes:
>
> Hello,
>
> voici une fonction qui résoud ton problème, complètement cette fois je
> pense:
> J'ai testé avec exactement le fichier que tu donnais, et le résultat
> est:
>
> Ingrid;28ans;Dutch;Sympa;Amatrice en Informatique
> Gloops;32ans;Français;Specialiste en Informatique
> Jacques;50ans;German;Insuportable;Nul en Informatique
>
> Les hyppothèses sont qu'un champ commence par "A" - "Z"
> Toutes les autres lignes sont ignorées
> On peut avoir autant de champs que l'on veut (MAX_FIELDS)
>
> Voici le code:
>
> '----------------------------------------
> Private Const MAX_FIELDS = 50
>
> Private Sub TransformFile(inputFile As String, outputFile As String)
> Dim inp As Integer, outp As Integer
> Dim s As String
> Dim fields(MAX_FIELDS) As String
> Dim nb_fields As Integer
> Dim i As Integer
> Dim first_car As String
>
> On Error GoTo err_TF
>
> inp = FreeFile
> Open inputFile For Input As #inp
> outp = FreeFile
> Open outputFile For Output As #outp
> While Not EOF(inp)
> Line Input #inp, s
> first_car = Mid$(s, 1, 1)
> If (first_car >= "A") And (first_car <= "Z") Then
> ' a new valied field
> ' is it a "A" (first field)
> If first_car = "A" Then
> ' 2 cases here
> ' a complete record is ready to be read or it's the
> one
> If nb_fields = 0 Then
> ' ok its a new record - just store it
> nb_fields = nb_fields + 1
> ' keep only from character position 3, to remove
> "Z:", etc.
> fields(nb_fields) = Mid$(s, 3)
> Else
> ' whowhowho ! we got a complete record!
> ' let's write it
> For i = 1 To nb_fields
> Print #outp, fields(i);
> If i <> nb_fields Then
> Print #outp, ";";
> End If
> Next i
> Print #outp, "" ' just to insert a Carriage
> Return/LineFeed
> ' Now restore field count
> nb_fields = 1
> ' store the beginning of this new record
> fields(nb_fields) = Mid$(s, 3)
> End If
> Else
> ' ok just add a field in the array
> nb_fields = nb_fields + 1
> ' keep only from character position 3, to remove "A:",
> etc.
> fields(nb_fields) = Mid$(s, 3)
> End If
> Else
> ' nothing to do, we just ignore the ligne
> End If
> Wend
> ' end of file
> ' do we have somethiong to write ?
> If nb_fields > 0 Then
> ' ok, just write it
> For i = 1 To nb_fields
> Print #outp, fields(i);
> If i <> nb_fields Then
> Print #outp, ";";
> End If
> Next i
> Print #outp, "" ' just to insert a Carriage Return/LineFeed
> End If
> ' That's it :-)
> Close #inp
> Close #outp
> end_TF:
> Exit Sub
> err_TF:
> MsgBox "error : " & Err.Description & " (" & Err.Number & ")"
> Resume end_TF
> End Sub
>
> ' ----------------- Sample call -------------------
> Private Sub Command1_Click()
> Call TransformFile("D:JMDvpmt#VBng376data.txt",
> "D:JMDvpmt#VBng376dataOUT.txt")
> End Sub
>
> Bonne programmation!
>
> --
> Jean-marc
> "There are only 10 kind of people
> those who understand binary and those who don't."
>
>
>
>
Hi,
oufff c'est moi qui ai lancé tout ce debat...
D'abord je remercie tout le monde et sans exception pour les reponses
données ( Gloops, le troll, pascal b. et jean-marc...).
Jean-marc, effectivement ton code fonctionne mais il y a un probleme. Je
vais essayer d'être claire et de bien m'exprimer. D'abord partons du code
jean-marc:
Tu as pris comme hypthèse que dans le fichier il y a une suite logique de
à Z. J'ai oublié de préciser que c'etait pas le cas. je vais vous donner
l'exercice qui va me rendre folle à la néerlandaise et si j'arrive pas à
resoudre je vais prendre le thalys pour passer ma journée à fumer dans un
cofee shop à Amsterdam...lol....
voilà:
J'ai un fichier Entrée structurée en ligne de la façon suivante:
xxx4528xxxxxx
:A:Ingrid
:B:28Ans
:R:Debutante
:D:01/01/2005 Dîplome
:D:01/02/2005 Demenagement
:A:Jacques
:B:40Ans
:R:Expert
:D:01/02/2005 Dîplome
:D:01/03/2005 Demenagement
xxxxx352xxxxxxxxxxxxxx
Ce fichier je veux le transformer en fichier sortie de la façon suivante:
Ingrid;28ans;Debutante;01/01/200 Dîplome
Ingrrid;28ans;Debutante;01/02/2005 Demenagement
Jacques;40Ans;Expert;01/02/2005 Dîplome
Jacques;40Ans;Expert;01/03/2005 Demenagement
Donc on peut conclure le suivant:
1- Il s'agit pas d'une suite logique de A à Z
2- dans le fichier Entrée, à mon avis la clé c'est le D parceque qd il y a
un second D pour la meme personne (comme dans l'exemple), il saute une
il reprend les infos A, B et R et il rajoute une nouvelle ligne.
Notez chers amis que j'arrive à le faire sous excel car je peux bouger
ligne et les cells plus facilement mais mon prof qui me torture veut qu'on
fasse sous excel....
Est ce que vous pouvez m'aider ?
Kisses à tout le monde
Ingrid
"jean-marc" wrote:
> "Ingrid" wrote in message
> news:
> > gloops,
> > ça marche mais ça répond pas completement à mon probleme et ceci pour
> > raison suivante:
> > 1-Parce que dans mon exemple on a fixé 3 lignes comme hypothèse et
> en
> > avait x lignes, on fait comment?
> > je te donne un exercice avec ton code un peu retouché par des
> > voilà j'ai un fichier sortie dans lequel il y a les informations
> suivantes:
>
> Hello,
>
> voici une fonction qui résoud ton problème, complètement cette fois je
> pense:
> J'ai testé avec exactement le fichier que tu donnais, et le résultat
> est:
>
> Ingrid;28ans;Dutch;Sympa;Amatrice en Informatique
> Gloops;32ans;Français;Specialiste en Informatique
> Jacques;50ans;German;Insuportable;Nul en Informatique
>
> Les hyppothèses sont qu'un champ commence par "A" - "Z"
> Toutes les autres lignes sont ignorées
> On peut avoir autant de champs que l'on veut (MAX_FIELDS)
>
> Voici le code:
>
> '----------------------------------------
> Private Const MAX_FIELDS = 50
>
> Private Sub TransformFile(inputFile As String, outputFile As String)
> Dim inp As Integer, outp As Integer
> Dim s As String
> Dim fields(MAX_FIELDS) As String
> Dim nb_fields As Integer
> Dim i As Integer
> Dim first_car As String
>
> On Error GoTo err_TF
>
> inp = FreeFile
> Open inputFile For Input As #inp
> outp = FreeFile
> Open outputFile For Output As #outp
> While Not EOF(inp)
> Line Input #inp, s
> first_car = Mid$(s, 1, 1)
> If (first_car >= "A") And (first_car <= "Z") Then
> ' a new valied field
> ' is it a "A" (first field)
> If first_car = "A" Then
> ' 2 cases here
> ' a complete record is ready to be read or it's the
> one
> If nb_fields = 0 Then
> ' ok its a new record - just store it
> nb_fields = nb_fields + 1
> ' keep only from character position 3, to remove
> "Z:", etc.
> fields(nb_fields) = Mid$(s, 3)
> Else
> ' whowhowho ! we got a complete record!
> ' let's write it
> For i = 1 To nb_fields
> Print #outp, fields(i);
> If i <> nb_fields Then
> Print #outp, ";";
> End If
> Next i
> Print #outp, "" ' just to insert a Carriage
> Return/LineFeed
> ' Now restore field count
> nb_fields = 1
> ' store the beginning of this new record
> fields(nb_fields) = Mid$(s, 3)
> End If
> Else
> ' ok just add a field in the array
> nb_fields = nb_fields + 1
> ' keep only from character position 3, to remove "A:",
> etc.
> fields(nb_fields) = Mid$(s, 3)
> End If
> Else
> ' nothing to do, we just ignore the ligne
> End If
> Wend
> ' end of file
> ' do we have somethiong to write ?
> If nb_fields > 0 Then
> ' ok, just write it
> For i = 1 To nb_fields
> Print #outp, fields(i);
> If i <> nb_fields Then
> Print #outp, ";";
> End If
> Next i
> Print #outp, "" ' just to insert a Carriage Return/LineFeed
> End If
> ' That's it :-)
> Close #inp
> Close #outp
> end_TF:
> Exit Sub
> err_TF:
> MsgBox "error : " & Err.Description & " (" & Err.Number & ")"
> Resume end_TF
> End Sub
>
> ' ----------------- Sample call -------------------
> Private Sub Command1_Click()
> Call TransformFile("D:JMDvpmt#VBng376data.txt",
> "D:JMDvpmt#VBng376dataOUT.txt")
> End Sub
>
> Bonne programmation!
>
> --
> Jean-marc
> "There are only 10 kind of people
> those who understand binary and those who don't."
>
>
>
>
LE TROLL a écrit, le 23/03/2005 12:13 :Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
J'ai parlé d'ignominie ?
Erreur, je dirais ... Si il s'agit de transcrire trois
lignes en entrée par une ligne en sortie, en faisant le
même nombre d'écritures que de lectures, logiquement il y
a un os.
Mais c'est vrai qu'on peut moduler ce que je viens de
dire, de deux façons.
D'une part, tu dis que "lecture" peut regrouper un
ensemble d'opérations de lecture. Soit, c'est au niveau
clarté que ça me paraissait pêcher, mais à ce niveau il
semblerait que je n'aie pas été le meilleur.
D'autre part, on peut faire comme dit Jean-Marc, écrire
directement dans le tampon de sortie, et déclencher la
véritable opération d'écriture une fois que tout est prêt,
par Print #numfichiersortie, ""
c'est-à-dire sans point-virgule à la fin.
Finalement, l'essentiel reste de bien se comprendre.
Ingrid nous a dit qu'elle avait un prof : si il fait bien
son boulot, la question va finir par être d'une grande
limpidité.
LE TROLL a écrit, le 23/03/2005 12:13 :
Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
J'ai parlé d'ignominie ?
Erreur, je dirais ... Si il s'agit de transcrire trois
lignes en entrée par une ligne en sortie, en faisant le
même nombre d'écritures que de lectures, logiquement il y
a un os.
Mais c'est vrai qu'on peut moduler ce que je viens de
dire, de deux façons.
D'une part, tu dis que "lecture" peut regrouper un
ensemble d'opérations de lecture. Soit, c'est au niveau
clarté que ça me paraissait pêcher, mais à ce niveau il
semblerait que je n'aie pas été le meilleur.
D'autre part, on peut faire comme dit Jean-Marc, écrire
directement dans le tampon de sortie, et déclencher la
véritable opération d'écriture une fois que tout est prêt,
par Print #numfichiersortie, ""
c'est-à-dire sans point-virgule à la fin.
Finalement, l'essentiel reste de bien se comprendre.
Ingrid nous a dit qu'elle avait un prof : si il fait bien
son boulot, la question va finir par être d'une grande
limpidité.
LE TROLL a écrit, le 23/03/2005 12:13 :Oh, je n'ai pas spécialement regardé, où y a-t-il
ignominie???
J'ai parlé d'ignominie ?
Erreur, je dirais ... Si il s'agit de transcrire trois
lignes en entrée par une ligne en sortie, en faisant le
même nombre d'écritures que de lectures, logiquement il y
a un os.
Mais c'est vrai qu'on peut moduler ce que je viens de
dire, de deux façons.
D'une part, tu dis que "lecture" peut regrouper un
ensemble d'opérations de lecture. Soit, c'est au niveau
clarté que ça me paraissait pêcher, mais à ce niveau il
semblerait que je n'aie pas été le meilleur.
D'autre part, on peut faire comme dit Jean-Marc, écrire
directement dans le tampon de sortie, et déclencher la
véritable opération d'écriture une fois que tout est prêt,
par Print #numfichiersortie, ""
c'est-à-dire sans point-virgule à la fin.
Finalement, l'essentiel reste de bien se comprendre.
Ingrid nous a dit qu'elle avait un prof : si il fait bien
son boulot, la question va finir par être d'une grande
limpidité.
Ahhhhhhh, tu as raison!
------------
dim v as string
do while eof(p)...
if eof(p)... then exit do
v=""
for i = 1 to 3
v = v & résultat_lecture_fichier_1
next i
fichier_2 = v
loop
------------
Et comme ça, est-ce que ça va (le principe hein, lol), ne me
dis pas qu'ainsi ça ne marcherait pas :o)
Ahhhhhhh, tu as raison!
------------
dim v as string
do while eof(p)...
if eof(p)... then exit do
v=""
for i = 1 to 3
v = v & résultat_lecture_fichier_1
next i
fichier_2 = v
loop
------------
Et comme ça, est-ce que ça va (le principe hein, lol), ne me
dis pas qu'ainsi ça ne marcherait pas :o)
Ahhhhhhh, tu as raison!
------------
dim v as string
do while eof(p)...
if eof(p)... then exit do
v=""
for i = 1 to 3
v = v & résultat_lecture_fichier_1
next i
fichier_2 = v
loop
------------
Et comme ça, est-ce que ça va (le principe hein, lol), ne me
dis pas qu'ainsi ça ne marcherait pas :o)
Bonjour Ingrid
Une petite question, dans ton fichier quels enregistrements peuvcent être
multiples (pour le même A bien sur) ?
Uniquement les 'types D' ou d'autres ?
Driss HANIB
"Ingrid" a écrit dans le message de
news:
> Hi,
> oufff c'est moi qui ai lancé tout ce debat...
> D'abord je remercie tout le monde et sans exception pour les reponses
> données ( Gloops, le troll, pascal b. et jean-marc...).
>
> Jean-marc, effectivement ton code fonctionne mais il y a un probleme. Je
> vais essayer d'être claire et de bien m'exprimer. D'abord partons du code
de
> jean-marc:
> Tu as pris comme hypthèse que dans le fichier il y a une suite logique de
A
> à Z. J'ai oublié de préciser que c'etait pas le cas. je vais vous donner
> l'exercice qui va me rendre folle à la néerlandaise et si j'arrive pas à
le
> resoudre je vais prendre le thalys pour passer ma journée à fumer dans un
> cofee shop à Amsterdam...lol....
> voilà:
> J'ai un fichier Entrée structurée en ligne de la façon suivante:
> xxx4528xxxxxx
> :A:Ingrid
> :B:28Ans
> :R:Debutante
> :D:01/01/2005 Dîplome
> :D:01/02/2005 Demenagement
> :A:Jacques
> :B:40Ans
> :R:Expert
> :D:01/02/2005 Dîplome
> :D:01/03/2005 Demenagement
> xxxxx352xxxxxxxxxxxxxx
> Ce fichier je veux le transformer en fichier sortie de la façon suivante:
> Ingrid;28ans;Debutante;01/01/200 Dîplome
> Ingrrid;28ans;Debutante;01/02/2005 Demenagement
> Jacques;40Ans;Expert;01/02/2005 Dîplome
> Jacques;40Ans;Expert;01/03/2005 Demenagement
>
> Donc on peut conclure le suivant:
> 1- Il s'agit pas d'une suite logique de A à Z
> 2- dans le fichier Entrée, à mon avis la clé c'est le D parceque qd il y a
> un second D pour la meme personne (comme dans l'exemple), il saute une
ligne
> il reprend les infos A, B et R et il rajoute une nouvelle ligne.
>
>
> Notez chers amis que j'arrive à le faire sous excel car je peux bouger
entre
> ligne et les cells plus facilement mais mon prof qui me torture veut qu'on
le
> fasse sous excel....
>
> Est ce que vous pouvez m'aider ?
>
> Kisses à tout le monde
>
> Ingrid
>
> "jean-marc" wrote:
>
> > "Ingrid" wrote in message
> > news:
> > > gloops,
> > > ça marche mais ça répond pas completement à mon probleme et ceci pour
la
> > > raison suivante:
> > > 1-Parce que dans mon exemple on a fixé 3 lignes comme hypothèse et
s'il y
> > en
> > > avait x lignes, on fait comment?
> > > je te donne un exercice avec ton code un peu retouché par des
conditions :
> > > voilà j'ai un fichier sortie dans lequel il y a les informations
> > suivantes:
> >
> > Hello,
> >
> > voici une fonction qui résoud ton problème, complètement cette fois je
> > pense:
> > J'ai testé avec exactement le fichier que tu donnais, et le résultat
produit
> > est:
> >
> > Ingrid;28ans;Dutch;Sympa;Amatrice en Informatique
> > Gloops;32ans;Français;Specialiste en Informatique
> > Jacques;50ans;German;Insuportable;Nul en Informatique
> >
> > Les hyppothèses sont qu'un champ commence par "A" - "Z"
> > Toutes les autres lignes sont ignorées
> > On peut avoir autant de champs que l'on veut (MAX_FIELDS)
> >
> > Voici le code:
> >
> > '----------------------------------------
> > Private Const MAX_FIELDS = 50
> >
> > Private Sub TransformFile(inputFile As String, outputFile As String)
> > Dim inp As Integer, outp As Integer
> > Dim s As String
> > Dim fields(MAX_FIELDS) As String
> > Dim nb_fields As Integer
> > Dim i As Integer
> > Dim first_car As String
> >
> > On Error GoTo err_TF
> >
> > inp = FreeFile
> > Open inputFile For Input As #inp
> > outp = FreeFile
> > Open outputFile For Output As #outp
> > While Not EOF(inp)
> > Line Input #inp, s
> > first_car = Mid$(s, 1, 1)
> > If (first_car >= "A") And (first_car <= "Z") Then
> > ' a new valied field
> > ' is it a "A" (first field)
> > If first_car = "A" Then
> > ' 2 cases here
> > ' a complete record is ready to be read or it's the
first
> > one
> > If nb_fields = 0 Then
> > ' ok its a new record - just store it
> > nb_fields = nb_fields + 1
> > ' keep only from character position 3, to remove
"A:",
> > "Z:", etc.
> > fields(nb_fields) = Mid$(s, 3)
> > Else
> > ' whowhowho ! we got a complete record!
> > ' let's write it
> > For i = 1 To nb_fields
> > Print #outp, fields(i);
> > If i <> nb_fields Then
> > Print #outp, ";";
> > End If
> > Next i
> > Print #outp, "" ' just to insert a Carriage
> > Return/LineFeed
> > ' Now restore field count
> > nb_fields = 1
> > ' store the beginning of this new record
> > fields(nb_fields) = Mid$(s, 3)
> > End If
> > Else
> > ' ok just add a field in the array
> > nb_fields = nb_fields + 1
> > ' keep only from character position 3, to remove "A:",
"Z:",
> > etc.
> > fields(nb_fields) = Mid$(s, 3)
> > End If
> > Else
> > ' nothing to do, we just ignore the ligne
> > End If
> > Wend
> > ' end of file
> > ' do we have somethiong to write ?
> > If nb_fields > 0 Then
> > ' ok, just write it
> > For i = 1 To nb_fields
> > Print #outp, fields(i);
> > If i <> nb_fields Then
> > Print #outp, ";";
> > End If
> > Next i
> > Print #outp, "" ' just to insert a Carriage Return/LineFeed
> > End If
> > ' That's it :-)
> > Close #inp
> > Close #outp
> > end_TF:
> > Exit Sub
> > err_TF:
> > MsgBox "error : " & Err.Description & " (" & Err.Number & ")"
> > Resume end_TF
> > End Sub
> >
> > ' ----------------- Sample call -------------------
> > Private Sub Command1_Click()
> > Call TransformFile("D:JMDvpmt#VBng376data.txt",
> > "D:JMDvpmt#VBng376dataOUT.txt")
> > End Sub
> >
> > Bonne programmation!
> >
> > --
> > Jean-marc
> > "There are only 10 kind of people
> > those who understand binary and those who don't."
> >
> >
> >
> >
Bonjour Ingrid
Une petite question, dans ton fichier quels enregistrements peuvcent être
multiples (pour le même A bien sur) ?
Uniquement les 'types D' ou d'autres ?
Driss HANIB
"Ingrid" <Ingrid@discussions.microsoft.com> a écrit dans le message de
news:CCC80F4D-C6A5-45C5-8265-C80571D38BD8@microsoft.com...
> Hi,
> oufff c'est moi qui ai lancé tout ce debat...
> D'abord je remercie tout le monde et sans exception pour les reponses
> données ( Gloops, le troll, pascal b. et jean-marc...).
>
> Jean-marc, effectivement ton code fonctionne mais il y a un probleme. Je
> vais essayer d'être claire et de bien m'exprimer. D'abord partons du code
de
> jean-marc:
> Tu as pris comme hypthèse que dans le fichier il y a une suite logique de
A
> à Z. J'ai oublié de préciser que c'etait pas le cas. je vais vous donner
> l'exercice qui va me rendre folle à la néerlandaise et si j'arrive pas à
le
> resoudre je vais prendre le thalys pour passer ma journée à fumer dans un
> cofee shop à Amsterdam...lol....
> voilà:
> J'ai un fichier Entrée structurée en ligne de la façon suivante:
> xxx4528xxxxxx
> :A:Ingrid
> :B:28Ans
> :R:Debutante
> :D:01/01/2005 Dîplome
> :D:01/02/2005 Demenagement
> :A:Jacques
> :B:40Ans
> :R:Expert
> :D:01/02/2005 Dîplome
> :D:01/03/2005 Demenagement
> xxxxx352xxxxxxxxxxxxxx
> Ce fichier je veux le transformer en fichier sortie de la façon suivante:
> Ingrid;28ans;Debutante;01/01/200 Dîplome
> Ingrrid;28ans;Debutante;01/02/2005 Demenagement
> Jacques;40Ans;Expert;01/02/2005 Dîplome
> Jacques;40Ans;Expert;01/03/2005 Demenagement
>
> Donc on peut conclure le suivant:
> 1- Il s'agit pas d'une suite logique de A à Z
> 2- dans le fichier Entrée, à mon avis la clé c'est le D parceque qd il y a
> un second D pour la meme personne (comme dans l'exemple), il saute une
ligne
> il reprend les infos A, B et R et il rajoute une nouvelle ligne.
>
>
> Notez chers amis que j'arrive à le faire sous excel car je peux bouger
entre
> ligne et les cells plus facilement mais mon prof qui me torture veut qu'on
le
> fasse sous excel....
>
> Est ce que vous pouvez m'aider ?
>
> Kisses à tout le monde
>
> Ingrid
> ingridnlfr@hotmail.com
> "jean-marc" wrote:
>
> > "Ingrid" <Ingrid@discussions.microsoft.com> wrote in message
> > news:EA1324FE-7D06-4335-98AC-CDFDE0F575D2@microsoft.com...
> > > gloops,
> > > ça marche mais ça répond pas completement à mon probleme et ceci pour
la
> > > raison suivante:
> > > 1-Parce que dans mon exemple on a fixé 3 lignes comme hypothèse et
s'il y
> > en
> > > avait x lignes, on fait comment?
> > > je te donne un exercice avec ton code un peu retouché par des
conditions :
> > > voilà j'ai un fichier sortie dans lequel il y a les informations
> > suivantes:
> >
> > Hello,
> >
> > voici une fonction qui résoud ton problème, complètement cette fois je
> > pense:
> > J'ai testé avec exactement le fichier que tu donnais, et le résultat
produit
> > est:
> >
> > Ingrid;28ans;Dutch;Sympa;Amatrice en Informatique
> > Gloops;32ans;Français;Specialiste en Informatique
> > Jacques;50ans;German;Insuportable;Nul en Informatique
> >
> > Les hyppothèses sont qu'un champ commence par "A" - "Z"
> > Toutes les autres lignes sont ignorées
> > On peut avoir autant de champs que l'on veut (MAX_FIELDS)
> >
> > Voici le code:
> >
> > '----------------------------------------
> > Private Const MAX_FIELDS = 50
> >
> > Private Sub TransformFile(inputFile As String, outputFile As String)
> > Dim inp As Integer, outp As Integer
> > Dim s As String
> > Dim fields(MAX_FIELDS) As String
> > Dim nb_fields As Integer
> > Dim i As Integer
> > Dim first_car As String
> >
> > On Error GoTo err_TF
> >
> > inp = FreeFile
> > Open inputFile For Input As #inp
> > outp = FreeFile
> > Open outputFile For Output As #outp
> > While Not EOF(inp)
> > Line Input #inp, s
> > first_car = Mid$(s, 1, 1)
> > If (first_car >= "A") And (first_car <= "Z") Then
> > ' a new valied field
> > ' is it a "A" (first field)
> > If first_car = "A" Then
> > ' 2 cases here
> > ' a complete record is ready to be read or it's the
first
> > one
> > If nb_fields = 0 Then
> > ' ok its a new record - just store it
> > nb_fields = nb_fields + 1
> > ' keep only from character position 3, to remove
"A:",
> > "Z:", etc.
> > fields(nb_fields) = Mid$(s, 3)
> > Else
> > ' whowhowho ! we got a complete record!
> > ' let's write it
> > For i = 1 To nb_fields
> > Print #outp, fields(i);
> > If i <> nb_fields Then
> > Print #outp, ";";
> > End If
> > Next i
> > Print #outp, "" ' just to insert a Carriage
> > Return/LineFeed
> > ' Now restore field count
> > nb_fields = 1
> > ' store the beginning of this new record
> > fields(nb_fields) = Mid$(s, 3)
> > End If
> > Else
> > ' ok just add a field in the array
> > nb_fields = nb_fields + 1
> > ' keep only from character position 3, to remove "A:",
"Z:",
> > etc.
> > fields(nb_fields) = Mid$(s, 3)
> > End If
> > Else
> > ' nothing to do, we just ignore the ligne
> > End If
> > Wend
> > ' end of file
> > ' do we have somethiong to write ?
> > If nb_fields > 0 Then
> > ' ok, just write it
> > For i = 1 To nb_fields
> > Print #outp, fields(i);
> > If i <> nb_fields Then
> > Print #outp, ";";
> > End If
> > Next i
> > Print #outp, "" ' just to insert a Carriage Return/LineFeed
> > End If
> > ' That's it :-)
> > Close #inp
> > Close #outp
> > end_TF:
> > Exit Sub
> > err_TF:
> > MsgBox "error : " & Err.Description & " (" & Err.Number & ")"
> > Resume end_TF
> > End Sub
> >
> > ' ----------------- Sample call -------------------
> > Private Sub Command1_Click()
> > Call TransformFile("D:JMDvpmt#VBng376data.txt",
> > "D:JMDvpmt#VBng376dataOUT.txt")
> > End Sub
> >
> > Bonne programmation!
> >
> > --
> > Jean-marc
> > "There are only 10 kind of people
> > those who understand binary and those who don't."
> >
> >
> >
> >
Bonjour Ingrid
Une petite question, dans ton fichier quels enregistrements peuvcent être
multiples (pour le même A bien sur) ?
Uniquement les 'types D' ou d'autres ?
Driss HANIB
"Ingrid" a écrit dans le message de
news:
> Hi,
> oufff c'est moi qui ai lancé tout ce debat...
> D'abord je remercie tout le monde et sans exception pour les reponses
> données ( Gloops, le troll, pascal b. et jean-marc...).
>
> Jean-marc, effectivement ton code fonctionne mais il y a un probleme. Je
> vais essayer d'être claire et de bien m'exprimer. D'abord partons du code
de
> jean-marc:
> Tu as pris comme hypthèse que dans le fichier il y a une suite logique de
A
> à Z. J'ai oublié de préciser que c'etait pas le cas. je vais vous donner
> l'exercice qui va me rendre folle à la néerlandaise et si j'arrive pas à
le
> resoudre je vais prendre le thalys pour passer ma journée à fumer dans un
> cofee shop à Amsterdam...lol....
> voilà:
> J'ai un fichier Entrée structurée en ligne de la façon suivante:
> xxx4528xxxxxx
> :A:Ingrid
> :B:28Ans
> :R:Debutante
> :D:01/01/2005 Dîplome
> :D:01/02/2005 Demenagement
> :A:Jacques
> :B:40Ans
> :R:Expert
> :D:01/02/2005 Dîplome
> :D:01/03/2005 Demenagement
> xxxxx352xxxxxxxxxxxxxx
> Ce fichier je veux le transformer en fichier sortie de la façon suivante:
> Ingrid;28ans;Debutante;01/01/200 Dîplome
> Ingrrid;28ans;Debutante;01/02/2005 Demenagement
> Jacques;40Ans;Expert;01/02/2005 Dîplome
> Jacques;40Ans;Expert;01/03/2005 Demenagement
>
> Donc on peut conclure le suivant:
> 1- Il s'agit pas d'une suite logique de A à Z
> 2- dans le fichier Entrée, à mon avis la clé c'est le D parceque qd il y a
> un second D pour la meme personne (comme dans l'exemple), il saute une
ligne
> il reprend les infos A, B et R et il rajoute une nouvelle ligne.
>
>
> Notez chers amis que j'arrive à le faire sous excel car je peux bouger
entre
> ligne et les cells plus facilement mais mon prof qui me torture veut qu'on
le
> fasse sous excel....
>
> Est ce que vous pouvez m'aider ?
>
> Kisses à tout le monde
>
> Ingrid
>
> "jean-marc" wrote:
>
> > "Ingrid" wrote in message
> > news:
> > > gloops,
> > > ça marche mais ça répond pas completement à mon probleme et ceci pour
la
> > > raison suivante:
> > > 1-Parce que dans mon exemple on a fixé 3 lignes comme hypothèse et
s'il y
> > en
> > > avait x lignes, on fait comment?
> > > je te donne un exercice avec ton code un peu retouché par des
conditions :
> > > voilà j'ai un fichier sortie dans lequel il y a les informations
> > suivantes:
> >
> > Hello,
> >
> > voici une fonction qui résoud ton problème, complètement cette fois je
> > pense:
> > J'ai testé avec exactement le fichier que tu donnais, et le résultat
produit
> > est:
> >
> > Ingrid;28ans;Dutch;Sympa;Amatrice en Informatique
> > Gloops;32ans;Français;Specialiste en Informatique
> > Jacques;50ans;German;Insuportable;Nul en Informatique
> >
> > Les hyppothèses sont qu'un champ commence par "A" - "Z"
> > Toutes les autres lignes sont ignorées
> > On peut avoir autant de champs que l'on veut (MAX_FIELDS)
> >
> > Voici le code:
> >
> > '----------------------------------------
> > Private Const MAX_FIELDS = 50
> >
> > Private Sub TransformFile(inputFile As String, outputFile As String)
> > Dim inp As Integer, outp As Integer
> > Dim s As String
> > Dim fields(MAX_FIELDS) As String
> > Dim nb_fields As Integer
> > Dim i As Integer
> > Dim first_car As String
> >
> > On Error GoTo err_TF
> >
> > inp = FreeFile
> > Open inputFile For Input As #inp
> > outp = FreeFile
> > Open outputFile For Output As #outp
> > While Not EOF(inp)
> > Line Input #inp, s
> > first_car = Mid$(s, 1, 1)
> > If (first_car >= "A") And (first_car <= "Z") Then
> > ' a new valied field
> > ' is it a "A" (first field)
> > If first_car = "A" Then
> > ' 2 cases here
> > ' a complete record is ready to be read or it's the
first
> > one
> > If nb_fields = 0 Then
> > ' ok its a new record - just store it
> > nb_fields = nb_fields + 1
> > ' keep only from character position 3, to remove
"A:",
> > "Z:", etc.
> > fields(nb_fields) = Mid$(s, 3)
> > Else
> > ' whowhowho ! we got a complete record!
> > ' let's write it
> > For i = 1 To nb_fields
> > Print #outp, fields(i);
> > If i <> nb_fields Then
> > Print #outp, ";";
> > End If
> > Next i
> > Print #outp, "" ' just to insert a Carriage
> > Return/LineFeed
> > ' Now restore field count
> > nb_fields = 1
> > ' store the beginning of this new record
> > fields(nb_fields) = Mid$(s, 3)
> > End If
> > Else
> > ' ok just add a field in the array
> > nb_fields = nb_fields + 1
> > ' keep only from character position 3, to remove "A:",
"Z:",
> > etc.
> > fields(nb_fields) = Mid$(s, 3)
> > End If
> > Else
> > ' nothing to do, we just ignore the ligne
> > End If
> > Wend
> > ' end of file
> > ' do we have somethiong to write ?
> > If nb_fields > 0 Then
> > ' ok, just write it
> > For i = 1 To nb_fields
> > Print #outp, fields(i);
> > If i <> nb_fields Then
> > Print #outp, ";";
> > End If
> > Next i
> > Print #outp, "" ' just to insert a Carriage Return/LineFeed
> > End If
> > ' That's it :-)
> > Close #inp
> > Close #outp
> > end_TF:
> > Exit Sub
> > err_TF:
> > MsgBox "error : " & Err.Description & " (" & Err.Number & ")"
> > Resume end_TF
> > End Sub
> >
> > ' ----------------- Sample call -------------------
> > Private Sub Command1_Click()
> > Call TransformFile("D:JMDvpmt#VBng376data.txt",
> > "D:JMDvpmt#VBng376dataOUT.txt")
> > End Sub
> >
> > Bonne programmation!
> >
> > --
> > Jean-marc
> > "There are only 10 kind of people
> > those who understand binary and those who don't."
> >
> >
> >
> >
Une autre question. Ingrid, tu as bien dit qu'il s'agit d'exercices à la
suite d'un cours, n'est-ce pas ? On n'est pas limité dans le temps ni le
nombre de questions successives ?
Une autre question. Ingrid, tu as bien dit qu'il s'agit d'exercices à la
suite d'un cours, n'est-ce pas ? On n'est pas limité dans le temps ni le
nombre de questions successives ?
Une autre question. Ingrid, tu as bien dit qu'il s'agit d'exercices à la
suite d'un cours, n'est-ce pas ? On n'est pas limité dans le temps ni le
nombre de questions successives ?