OVH Cloud OVH Cloud

Convertir un fichier CSV

3 réponses
Avatar
Eric RENAUD
Bonjour,
J'ai un fichier CSV (champs séparés par des virgules) et je voudrais le
convertir en un fichier texte sans séparateur avec des logueurs de champs
constantes.
Par exemple

Renaud;Eric
Dubranna;Claude
Ric;Hunter

Je voudrais à présent avoir dans le fichier texte le champ Nom avec 20
caractères fixes et pour les Prénoms, 15 caractères fixes.
Cela est-il possible ?
D'avance merci

3 réponses

Avatar
Eric RENAUD
Merci de ta réponse, mais je n'arrive pas à mettre le nom de longueur 30 et
le prénom à 15
Voici le code
Sub Main()
Dim txt As String
Dim x As Variant
Dim i As Long
Dim nom As String * 30
Dim prenom As String * 15
FileNumber1 = FreeFile
Open "c:Excelml900-1.txt" For Output As #FileNumber1
FileNumber2 = FreeFile
Open "c:Excelml900.txt" For Input As #FileNumber2
Do While Not EOF(FileNumber2)
Line Input #FileNumber2, CONTENU_LIGNE
txt = CONTENU_LIGNE
x = Split(txt, ";")
For i = 0 To UBound(x)
If i = 1 Then prenom = x(i) Else nom = x(i)
Next i
Print #FileNumber1, nom, prenom
Loop
Close #FileNumber2
End Sub



"Bismark Prods" a écrit dans le message de news:

oui !

Il faut parser ton fichier avec des virgules en utilisant par exemple la
fonction Split(montexte,";") ce qui te donnera un tableau contenant tout


les
éléments qui étaient séparés par des ";".

Puis tu crée un type personalisé avec des longueurs tel que

public type Enr
nom as string * 20
prenom as string * 15
...
end type

puis tu ouvre un fichier en accès séquentielle
et tu ouvre une boucle sur ton tableau, tu renseigne les champs de Enr


(que
tu as associé à une variable), puis tu enregistre dans ton fichier

et le tour est joué


"Eric RENAUD" a écrit dans le message de
news:
> Bonjour,
> J'ai un fichier CSV (champs séparés par des virgules) et je voudrais le
> convertir en un fichier texte sans séparateur avec des logueurs de


champs
> constantes.
> Par exemple
>
> Renaud;Eric
> Dubranna;Claude
> Ric;Hunter
>
> Je voudrais à présent avoir dans le fichier texte le champ Nom avec 20
> caractères fixes et pour les Prénoms, 15 caractères fixes.
> Cela est-il possible ?
> D'avance merci
>
>




Avatar
Bismark Prods
Non faut te faire un type personnalisé !

Type Annuaire
Nom as String * 30
Prenom as String * 20
etc...
end Type



"Eric RENAUD" a écrit dans le message de
news:
Merci de ta réponse, mais je n'arrive pas à mettre le nom de longueur 30


et
le prénom à 15
Voici le code
Sub Main()
Dim txt As String
Dim x As Variant
Dim i As Long
Dim nom As String * 30
Dim prenom As String * 15
FileNumber1 = FreeFile
Open "c:Excelml900-1.txt" For Output As #FileNumber1
FileNumber2 = FreeFile
Open "c:Excelml900.txt" For Input As #FileNumber2
Do While Not EOF(FileNumber2)
Line Input #FileNumber2, CONTENU_LIGNE
txt = CONTENU_LIGNE
x = Split(txt, ";")
For i = 0 To UBound(x)
If i = 1 Then prenom = x(i) Else nom = x(i)
Next i
Print #FileNumber1, nom, prenom
Loop
Close #FileNumber2
End Sub



"Bismark Prods" a écrit dans le message de news:

> oui !
>
> Il faut parser ton fichier avec des virgules en utilisant par exemple la
> fonction Split(montexte,";") ce qui te donnera un tableau contenant tout
les
> éléments qui étaient séparés par des ";".
>
> Puis tu crée un type personalisé avec des longueurs tel que
>
> public type Enr
> nom as string * 20
> prenom as string * 15
> ...
> end type
>
> puis tu ouvre un fichier en accès séquentielle
> et tu ouvre une boucle sur ton tableau, tu renseigne les champs de Enr
(que
> tu as associé à une variable), puis tu enregistre dans ton fichier
>
> et le tour est joué
>
>
> "Eric RENAUD" a écrit dans le message de
> news:
> > Bonjour,
> > J'ai un fichier CSV (champs séparés par des virgules) et je voudrais


le
> > convertir en un fichier texte sans séparateur avec des logueurs de
champs
> > constantes.
> > Par exemple
> >
> > Renaud;Eric
> > Dubranna;Claude
> > Ric;Hunter
> >
> > Je voudrais à présent avoir dans le fichier texte le champ Nom avec 20
> > caractères fixes et pour les Prénoms, 15 caractères fixes.
> > Cela est-il possible ?
> > D'avance merci
> >
> >
>
>




Avatar
Eric RENAUD
J'ai enfin réussi. Je ne sais pas si c'est parfait, mais cela fonctionne. Si
il y mieux, je suis preneur.
Sub Main()
Dim txt As String
Dim x As Variant
Dim i As Long
Dim Valeur As Enr
Kill "c:excelml900-1.txt"
FileNumber1 = FreeFile
Open "c:Excelml900-1.txt" For Output As #FileNumber1 'Len = 45
' Lecture du fichier source ml900.txt
FileNumber2 = FreeFile
Open "c:Excelml900.txt" For Input As #FileNumber2
Do While Not EOF(FileNumber2)
Line Input #FileNumber2, CONTENU_LIGNE
txt = CONTENU_LIGNE
x = Split(txt, ";")
For i = 0 To UBound(x)
If i = 1 Then Valeur.Prenom = x(i) Else Valeur.Nom = x(i)
Next i
Print #FileNumber1, Valeur.Nom & Valeur.Prenom
Loop
Close #FileNumber2
End Sub

"Bismark Prods" a écrit dans le message de news:

oui !

Il faut parser ton fichier avec des virgules en utilisant par exemple la
fonction Split(montexte,";") ce qui te donnera un tableau contenant tout


les
éléments qui étaient séparés par des ";".

Puis tu crée un type personalisé avec des longueurs tel que

public type Enr
nom as string * 20
prenom as string * 15
...
end type

puis tu ouvre un fichier en accès séquentielle
et tu ouvre une boucle sur ton tableau, tu renseigne les champs de Enr


(que
tu as associé à une variable), puis tu enregistre dans ton fichier

et le tour est joué


"Eric RENAUD" a écrit dans le message de
news:
> Bonjour,
> J'ai un fichier CSV (champs séparés par des virgules) et je voudrais le
> convertir en un fichier texte sans séparateur avec des logueurs de


champs
> constantes.
> Par exemple
>
> Renaud;Eric
> Dubranna;Claude
> Ric;Hunter
>
> Je voudrais à présent avoir dans le fichier texte le champ Nom avec 20
> caractères fixes et pour les Prénoms, 15 caractères fixes.
> Cela est-il possible ?
> D'avance merci
>
>