Remplacer des caractères de controle

cs_defluc Messages postés 23 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 22 février 2008 - 2 févr. 2003 à 10:40
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 - 2 févr. 2003 à 16:36
J'ai un fichier dont les enregistrements comportent des champs de longueur variable séparés par des caractères de controle de tabulation [chr(9)].
Après lecture séquentielle par Input #1, je voudrais extraire ces champs pour les copier dans une table Access.
Mon idée est de remplacer les chr(9) par des chr(13) pour séparer les champs puis de relire le fichier séquentiellement.

Chaine = Replace(Chaine, Chr(9), Chr(13)) ne fonctionne pas, pas plus que Instr qui ne me trouve que la première occurence.

Qu'est ce qui coince.

Merci

Ci-après échantillon du fichier

010 Deltenre,Aline Bernadette Adrienne Deltenre Aline Bernadette Adrienne Madame 29.03.22 080-84 féminin 020 31.10.1972 1060 1880 Rue au Bois 0001 B Rue au Bois, 1/B Uccle 001 01.01.1948 25014 Uccle 010 Evrard,Bertha Evrard Bertha Madame 25.10.21 070-89 féminin 020 02.03.2000 1060 1880 Rue au Bois 0010 C Rue au Bois, 10/C Uccle 001 04.04.1997 25014 Uccle 010 De Preter,Frédéric De Preter Frédéric Monsieur 77.01.18 075-39 masculin 020 20.11.2001 1060 1880 Rue au Bois 0010 B Rue au Bois, 10/B Uccle 001 18.11.1978 25014 Uccle 010 Mottet,Christelle Arlette Anne Maggy Mottet Christelle Arlette Anne Maggy Madame 78.09.09 094-76 féminin 020 20.11.2001 1060 1880 Rue au Bois 0010 B Rue au Bois, 10/B Uccle 001 02.04.1986 25014 Uccle 010 Roland,Anne Marie Louise Roland Anne Marie Louise Madame 61.07.11 320-01 féminin 020 19.06.2002 1060 1880 Rue au Bois 0011 Rue au Bois, 11 Uccle 001 16.07.1985 25014 Uccle 010 Carlier,Lotier Carlier Lotier Monsieur 82.12.17 321-05 masculin 020 19.06.2002 1060 1880 Rue au Bois 0011 Rue au Bois, 11 Uccle 001 16.07.1985 25014 Uccle 010 Boly,Magali Boly Magali Madame 82.10.25 126-43 féminin 020 16.10.2002 1060 1880 Rue au Bois 0012 Rue au Bois, 12 Uccle 001 16.10.2002 25014 Uccle 010 Bury,Bénédicte Louise Jacqueline Ghislaine Bury Bénédicte Louise Jacqueline Ghislaine Madame 77.06.13 176-26 féminin 020 14.08.2002 1060 1880 Rue au Bois 0012 Rue au Bois, 12 Uccle 001 12.09.2000 25014 Uccle 010 Van Tieghem,Raymond Honoré Ghislain Van Tieghem Raymond Honoré Ghislain Monsieur 55.01.19 137-67 masculin 020 12.11.2002 1060 1880 Rue au Bois 0012 Rue au Bois, 12 Uccle 001 12.11.2002 25014 Uccle 010 Barrez,Véronique Murielle Barrez Véronique Murielle Madame 76.04.26 164-01 féminin 020 05.07.2001 1060 1880 Rue au Bois 0012 Rue au Bois, 12 Uccle 001 05.07.2001 25014 Uccle 010 Azouzi,Abdelmounim Azouzi Abdelmounim Monsieur 70.05.30 073-47 masculin 020 04.03.2002 1060 1880 Rue au Bois 0012 Rue au Bois, 12 Uccle 001 04.03.2002 25014 Uccle 010 El Ouasli,M'Barka El Ouasli M'Barka Madame 54.10.20 368-42 féminin 020 06.12.1999 1060 1880 Rue au Bois 0012 Rue au Bois, 12 Uccle 001 09.10.1997 25014 Uccle 010 Ureel,Christine Martine Ureel Christine Martine Madame 71.09.08 418-23 féminin 020 26.10.1999 1060 1880 Rue au Bois 0013 Rue au Bois, 13 Uccle 001 06.09.1976 25014 Uccle 010 Robert,Dominique Francis Claudine Ghislain Robert Dominique Francis Claudine Ghislain Monsieur 69.08.11 103-05 masculin 020 26.10.1999 1060 1880 Rue au Bois 0013 Rue au Bois, 13 Uccle 001 28.10.1997 25014 Uccle 010 Van,Laurent Robert Paul Van Laurent Robert Paul Monsieur 70.07.07 053-92 masculin 020 25.09.2000 1060 1880 Rue au Bois 0014 Rue au Bois, 14 Uccle 001 07.07.1970 25014 Uccle 010 Van,Willy François Louis Van Willy François Louis Monsieur 31.03.14 065-90 masculin 020 28.12.1959 1060 1880 Rue au Bois 0014 Rue au Bois, 14 Uccle 001 01.01.1948 25014 Uccle 010 Swalens,Nicole Juliette Joséphine Swalens Nicole Juliette Joséphine Madame 41.05.15 080-75 féminin 020 01.06.1963 1060 1880 Rue au Bois 0014 Rue au Bois, 14 Uccle 001 19.11.1962 25014 Uccle 010 Volon,Edouard Sébastien Volon Edouard Sébastien Monsieur 49.08.25 049-92 masculin 020 01.03.1974 1060 1880 Rue au Bois 0015 Rue au Bois, 15 Uccle 001 23.04.1970 25014 Uccle 010 Fastenaekels,Jacqueline Fastenaekels Jacqueline Madame 48.07.28 106-14 féminin 020 01.03.1974 1060 1880 Rue au Bois 0015 Rue au Bois, 15 Uccle 001 31.03.1970 25014 Uccle 010 Janssens,Eddy Richard Paul Janssens Eddy Richard Paul Monsieur 65.09.18 469-31 masculin 020 06.03.2002 1060 1880 Rue au Bois 0015 Rue au Bois, 15 Uccle 001 22.05.2001 25014 Uccle 010 Jimenez-Gutierrez,Luisa Jimenez-Gutierrez Luisa Madame 58.07.14 092-76 féminin 020 09.08.1993 1060 1880 Rue au Bois 0016 Rue au Bois, 16 Uccle 001 03.04.1966 25014 Uccle 010 Fumière,Ludovic Jean-Marie Daniel Fumière Ludovic Jean-Marie Daniel Monsieur 77.07.11 059-16 masculin 020 09.08.1993 1060 1880 Rue au Bois 0016 Rue au Bois, 16 Uccle 001 11.07.1977 25014 Uccle 010 Fumière,André Gaston Ghislain Fumière André Gaston Ghislain Monsieur 54.04.22 089-25 masculin 020 09.08.1993 1060 1880 Rue au Bois 0016 Rue au Bois, 16 Uccle 001 11.07.1963 25014 Uccle 010 Paglia,Maria Paglia Maria Madame 70.04.05 082-05 féminin 020 12.08.2002 1060 1880 Rue au Bois 0017 Rue au Bois, 17 Uccle 001 12.08.2002 25014 Uccle 010 Zecca,Jean-Pierre Zecca Jean-Pierre Monsieur 70.09.06 279-07 masculin 020 12.08.2002 1060 1880 Rue au Bois 0017 Rue au Bois, 17 Uccle 001 12.08.2002 25014 Uccle 010 Delforge,Marie-Laure Viviane Aline Delforge Marie-Laure Viviane Aline Madame 83.06.26 212-17 féminin 020 29.03.2002 1060 1880 Rue au Bois 0019 B001 Rue au Bois, 19/B1 Uccle 001 29.03.2002 25014 Uccle 010 Calot,Roger Jacqueline Roger Calot Roger Jacqueline Roger Monsieur 73.11.25 221-57 masculin 020 29.03.2002 1060 1880 Rue au Bois 0019 C003 Rue au Bois, 19/C3 Uccle 001 29.03.2002 25014 Uccle 010 Tuvi,Nicolas Hubert Jean Tuvi Nicolas Hubert Jean Monsieur 77.03.17 301-51 masculin 020 04.07.2002 1060 1880 Rue au Bois 0019 B002 Rue au Bois, 19/B2 Uccle 001 22.11.2001 25014 Uccle 010 Mentor,Steve Jean Dominique Mentor Steve Jean Dominique Monsieur 72.08.12 103-38 masculin 020 23.10.2002 1060 1880 Rue au Bois 0019 B001 Rue au Bois, 19/B1 Uccle 001 23.02.2002 25014 Uccle 010 Mentor,Peter Mentor Peter Monsieur 78.08.09 107-56 masculin 020 12.10.2002 1060 1880 Rue au Bois 0019 D006 Rue au Bois, 19/D6 Uccle 001 12.10.2002 25014 Uccle 010 Taylor,Peter dit Marc Taylor Peter dit Marc Monsieur 60.12.16 097-88 masculin 020 26.10.2001 1060 1880 Rue au Bois 0019 C004 Rue au Bois, 19/C4 Uccle 001 05.05.2000 25014 Uccle 010 Alluin,Laurence Danielle Fernanda Alluin Laurence Danielle Fernanda Madame 78.08.17 152-62 féminin 020 28.03.2002 1060 1880 Rue au Bois 0019 D005 Rue au Bois, 19/D5 Uccle 001 19.03.1997 25014 Uccle 010 Delcord,Claire Paulette Delcord Claire Paulette Madame 41.06.15 062-03 féminin 020 11.12.1964 1060 1880 Rue au Bois 0020 Rue au Bois, 20 Uccle 001 11.12.1964 25014 Uccle 010 Delans,Luc Elie Prosper Joseph Delans Luc Elie Prosper Joseph Monsieur 36.02.16 089-07 masculin 020 11.12.1964 1060 1880 Rue au Bois 0020 Rue au Bois, 20 Uccle 001 11.12.1964 25014 Uccle 010 Leclercq,Claire Leclercq Claire Madame 13.03.17 084-88 féminin 020 13.02.1997 1060 1880 Rue au Bois 0020 Rue au Bois, 20 Uccle 001 09.06.1966 25014 Uccle 010 Deltenree,Myriam Elisa Deltenree Myriam Elisa Madame 64.10.17 004-27 féminin 020 18.06.1996 1060 1880 Rue au Bois 0022 Rue au Bois, 22 Uccle 001 23.06.1990 25014 Uccle 010 Notaert,Eric Urbain Marie Notaert Eric Urbain Marie Monsieur 61.12.19 003-16 masculin 020 18.06.1996 1060 1880 Rue au Bois 0022 Rue au Bois, 22 Uccle 001 23.06.1990 25014 Uccle 010 Dadet,Marie-France Germaine Marthe Viviane Dadet Marie-France Germaine Marthe Viviane Madame 64.06.19 246-85 féminin 020 17.12.1990 1060 1880 Rue au Bois 0026 Rue au Bois, 26 Uccle 001 19.07.1986 25014 Uccle 010 Stevens,Etienne Luc Stevens Etienne Luc Monsieur 60.07.15 091-89 masculin 020 17.12.1990 1060 1880 Rue au Bois 0026 Rue au Bois, 26 Uccle 001 19.07.1986 25014 Uccle 010 Vladuc,Claire Marie Louise Vladuc Claire Marie Louise Madame 20.03.23 010-32 féminin 020 20.09.1990 1060 1880 Rue au Bois 0027 Rue au Bois, 27 Uccle 001 20.09.1990 25014 Uccle 010 Labar,Barthelemi Jean Pierre Labar Barthelemi Jean Pierre Monsieur 33.08.10 303-49 masculin 020 20.09.1990 1060 1880 Rue au Bois 0027 Rue au Bois, 27 Uccle 001 20.09.1990 25014 Uccle 010 Désirant,Madeleine Marguerite Marie Désirant Madeleine Marguerite Marie Madame 29.05.18 102-02 féminin 020 12.09.1997 1060 1880 Rue au Bois 0029 Rue au Bois, 29 Uccle 001 01.01.1948 25014 Uccle 010 Dufond,Véronique Bernadette Louisa Lucienne Francine Ghislaine Dufond Véronique Bernadette Louisa Lucienne Francine Ghislaine Madame 64.06.26 248-67 féminin 020 04.07.1985 1060 1880 Rue au Bois 0047 Rue au Bois, 47 Uccle 001 04.07.1985 25014 Uccle 010 Stevens,Michel Pierre Stevens Michel Pierre Monsieur 62.10.30 091-90 masculin 020 04.07.1985 1060 1880 Rue au Bois 0047 Rue au Bois, 47 Uccle 001 04.07.1985 25014 Uccle 010 Brown,Cynthia Lee Brown Cynthia Lee Madame 56.10.09 332-62 féminin 020 29.01.2002 1060 1880 Rue au Bois 0051 Rue au Bois, 51 Uccle 001 29.01.2002 25014 Uccle 010 Van Hove,Julie Sarah Cynthia Van Hove Julie Sarah Cynthia Madame 80.03.13 216-28 féminin 020 23.03.2002 1060 1880 Rue au Bois 0051 Rue au Bois, 51 Uccle 001 23.03.2002 25014 Uccle 010 Mosselmans,Christian Léon Catherine Mosselmans Christian Léon Catherine Monsieur 57.02.18 073-16 masculin 020 21.09.1990 1060 1880 Rue au Bois 0053 Rue au Bois, 53 Uccle 001 18.02.1957 25014 Uccle 010 Van Laere,Denise Paula Charlotte Augusta Van Laere Denise Paula Charlotte Augusta Madame 28.09.30 082-57 féminin 020 26.09.1990 1060 1880 Rue au Bois 0053 Rue au Bois, 53 Uccle 001 15.04.1952 25014 Uccle 010 Mosselmans,Antoon Mosselmans Antoon Monsieur 26.02.22 067-27 masculin 020 26.09.1990 1060 1880 Rue au Bois 0053 Rue au Bois, 53 Uccle 001 15.04.1952 25014 Uccle 010 Bonivert,Jeanine Mauricette Lucille Bonivert Jeanine Mauricette Lucille Madame 63.12.13 028-19 féminin 020 08.10.1988 1060 1880 Rue au Bois 0061 Rue au Bois, 61 Uccle 001 08.10.1988 25014 Uccle 010 Vondel,Guido René Marguerite Vondel Guido René Marguerite Monsieur 52.12.10 035-65 masculin 020 22.10.2001 1060 1880 Rue au Bois 0061 Rue au Bois, 61 Uccle 001 22.10.2001 25014 Uccle 010 Merckx,Laurent Jerôme Christian Gilbert Merckx Laurent Jerôme Christian Gilbert Monsieur 74.11.08 237-87 masculin 020 27.09.1994 1060 1880 Rue au Bois 0063 B Rue au Bois, 63/B Uccle 001 22.01.1987 25014 Uccle 010 Merckx,Quentin Stéphane Laurent Merckx Quentin Stéphane Laurent Monsieur 83.11.16 035-44 masculin 020 22.04.2002 1060 1880 Rue au Bois 0063 B Rue au Bois, 63/B Uccle 001 16.07.1997 25014 Uccle

6 réponses

cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
2 févr. 2003 à 11:33
Comment procèdes-tu à la lecture de ton fichier ?
Ton fichier a-t-il été écrit avec Print ou Write ?
0
cs_defluc Messages postés 23 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 22 février 2008
2 févr. 2003 à 11:55
Je lis le fichier par Input #1.
Ce fichier m'est fourni par un client et je ne sais pas comment il est écrit mais quand je le lis caractère par caractère par input(1,Caract), je découvre le caractère de tabulation chr(9) entre chaque champs.

Merci de ton suivi

defluc
0
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
2 févr. 2003 à 12:01
Peux-tu mettre ton code de lecture ?
Tu dis lire les caractères les uns après les autres, mais qu'en fais-tu ? Les places-tu dans une variable ?

Ne pourrais-tu remplacer le chr(9) directement après la lecture ?

Input (1,Caract)
If Caract = Chr(9) Then
MaVariable = MaVariable & Chr(13)
Else
MaVariable = MaVariable & Caract
End If
0
cs_defluc Messages postés 23 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 22 février 2008
2 févr. 2003 à 12:05
Bien sûr, quesi mais ce n'est pas très
élégant et plutôt laborieux, comment se fait-il que la fonction replace ne marche pas, pas plus que Instr ?

defluc
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
2 févr. 2003 à 12:10
Si tu veux, tu peux m'envoyer ton projet et ton fichier que j'y jettes un oeil et puisse répondre à tes questions : programmix@skynet.be
0
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
2 févr. 2003 à 16:36
Voilà je viens de t'envoyer la source avec la manière dont j'ai lu ton fameux fichier.

Voici la manière dont j'ai procédé :
1° Je lis tout le fichier, caractère par caractère afin de reconstituer un texte complet
LeCaractère = Input (numFichier, 1)
LeTexte = LeTexte & LeCaractère
2° Sachant qu'il s'agit d'un fichier contenant différents champs séparés par le caractère de tabulation, je découpe le texte obtenu en un tableau contenant tous les champs
Dim ListeChamps() As String
ListeChamps = Split (LeTexte, Chr(9))
3° J'affiche les champs dans un MSFlexGrid où chaque colonne correspond à un champs et chaque ligne à un enregistrement.
C'est ici que j'ai le plus tatonné, car pour déterminer un enregistrement, il faut savoir de combien de champs il est constitué (information qui ne m'avait pas été fournie)

Dim i As Integer
Dim Col As Integer
Dim Lig As Integer

Lig = 1 'Numéro de la ligne dans la grille
Col = 1 'Numéro de la colonne dans la grille

'Je me place sur la première ligne
Me.MSFlexGrid1.Row = Lig

'Je passe en revue chacun des champs
For i = LBound(éléments) To UBound(éléments)

'Je me place sur la colonne définie par "Col"
Me.MSFlexGrid1.Col = Col

'J'y indique le champs
Me.MSFlexGrid1.Text = éléments(i)

'Si je ne suis pas sur le tout premier champs du fichier
If i > 0 Then

'C'est ici que j'ai tatonné afin de trouver 22 qui correspond au nombre de champs
'contenus dans chacun des enregistrements
'Si le reste de la division de l'index du champs par 22 est égale à zéro,
'c'est qu'on vient de parcourir un enregistrement, on passe donc à la ligne suivant...
If (i + 1) Mod 22 = 0 Then
Lig = Lig + 1
Col = 1
Me.MSFlexGrid1.Row = Lig
Else
'...sinon on reste sur la ligne mais on passe à la colonne suivante
Col = Col + 1
End If
Else
Col = Col + 1
End If
Next

MsgBox "fin du fichier"

Voilà....
0
Rejoignez-nous