Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

transformer un fichier de données texte en fichier excel

7 réponses
Avatar
ghari
Bonjour,
je reçois un fichier Word contenant des enregistrements de plus de 150
individus sous la forme suivante
//
NUMERO ADHERENT
1358
NOM
dupond
ADRESSE
35 rue de la paix
PROFESSION
Conducteur de travaux
MATRICULE
125983
//
NUMERO ADHERENT
1680
NOM
durand
ADRESSE
456 avenue Montparnasse
PROFESSION
menuisier
MATRICULE
335789
//
je souhaiterais obtenir un tableau du type sous format texte tab ou csv
c-à-d compatible excel
NUMERO ADHERENT
NOM
ADRESSE
PROFESSION
MATRICULE

1358
dupond
35 rue de la paix
Conducteur de travaux
125983

1680
durand
456 avenue Montparnasse
menuisier
335789



Comment procéder ? Merci de vos lumières
GR

7 réponses

Avatar
Hervé
Bonsoir,
Ouvre ton fichier Word et enregistre le au format .txt puis ferme le et
lance cette procédure (à mettre dans un module standard) aprés avoir indiqué
le bon chemin du fichier .txt. Les enregistrements seront placés dans une
feuille ensuite, à toi de savoir ce que tu veux en faire :

Sub Lire()
Dim Tbl() As String
Dim Ligne As String
Dim Resultat As String
Dim I As Integer
Dim L As Integer

'enregistrer le fichier dans Word au format
'.txt puis lancer cette proc avec le bon
'chemin
Open "C:Mon Fichier.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, Ligne
I = I + 1
ReDim Preserve Tbl(1 To I)
Tbl(I) = Ligne
Loop
Close #1

'intitulés des colonnes
[A1] = "NUMERO ADHERENT"
[B1] = "NOM"
[C1] = "ADRESSE"
[D1] = "PROFESSION"
[E1] = "MATRICULE"
L = 1
'inscription des valeurs
For I = 1 To UBound(Tbl)
Select Case Tbl(I)
'nouvel enregistrement délimité par "//"
Case "//"
L = L + 1
Case "NUMERO ADHERENT"
Cells(L, 1) = Tbl(I + 1)
Case "NOM"
Cells(L, 2) = Tbl(I + 1)
Case "ADRESSE"
Cells(L, 3) = Tbl(I + 1)
Case "PROFESSION"
Cells(L, 4) = Tbl(I + 1)
Case "MATRICULE"
Cells(L, 5) = Tbl(I + 1)
End Select
Next I

Erase Tbl()
End Sub


Hervé.



"ghari" a écrit dans le message de news:
48de6e1d$0$14921$
Bonjour,
je reçois un fichier Word contenant des enregistrements de plus de 150
individus sous la forme suivante
//
NUMERO ADHERENT
1358
NOM
dupond
ADRESSE
35 rue de la paix
PROFESSION
Conducteur de travaux
MATRICULE
125983
//
NUMERO ADHERENT
1680
NOM
durand
ADRESSE
456 avenue Montparnasse
PROFESSION
menuisier
MATRICULE
335789
//
je souhaiterais obtenir un tableau du type sous format texte tab ou csv
c-à-d compatible excel
NUMERO ADHERENT
NOM
ADRESSE
PROFESSION
MATRICULE

1358
dupond
35 rue de la paix
Conducteur de travaux
125983

1680
durand
456 avenue Montparnasse
menuisier
335789



Comment procéder ? Merci de vos lumières
GR



Avatar
Hervé
Re,

Petite erreur suite aux tests, supprime la variable "Dim Resultat As String"
elle ne sert à rien :o(

Hervé.

"Hervé" a écrit dans le message de news:

Bonsoir,
Ouvre ton fichier Word et enregistre le au format .txt puis ferme le et
lance cette procédure (à mettre dans un module standard) aprés avoir
indiqué le bon chemin du fichier .txt. Les enregistrements seront placés
dans une feuille ensuite, à toi de savoir ce que tu veux en faire :

Sub Lire()
Dim Tbl() As String
Dim Ligne As String
Dim Resultat As String
Dim I As Integer
Dim L As Integer

'enregistrer le fichier dans Word au format
'.txt puis lancer cette proc avec le bon
'chemin
Open "C:Mon Fichier.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, Ligne
I = I + 1
ReDim Preserve Tbl(1 To I)
Tbl(I) = Ligne
Loop
Close #1

'intitulés des colonnes
[A1] = "NUMERO ADHERENT"
[B1] = "NOM"
[C1] = "ADRESSE"
[D1] = "PROFESSION"
[E1] = "MATRICULE"
L = 1
'inscription des valeurs
For I = 1 To UBound(Tbl)
Select Case Tbl(I)
'nouvel enregistrement délimité par "//"
Case "//"
L = L + 1
Case "NUMERO ADHERENT"
Cells(L, 1) = Tbl(I + 1)
Case "NOM"
Cells(L, 2) = Tbl(I + 1)
Case "ADRESSE"
Cells(L, 3) = Tbl(I + 1)
Case "PROFESSION"
Cells(L, 4) = Tbl(I + 1)
Case "MATRICULE"
Cells(L, 5) = Tbl(I + 1)
End Select
Next I

Erase Tbl()
End Sub


Hervé.



"ghari" a écrit dans le message de news:
48de6e1d$0$14921$
Bonjour,
je reçois un fichier Word contenant des enregistrements de plus de 150
individus sous la forme suivante
//
NUMERO ADHERENT
1358
NOM
dupond
ADRESSE
35 rue de la paix
PROFESSION
Conducteur de travaux
MATRICULE
125983
//
NUMERO ADHERENT
1680
NOM
durand
ADRESSE
456 avenue Montparnasse
PROFESSION
menuisier
MATRICULE
335789
//
je souhaiterais obtenir un tableau du type sous format texte tab ou csv
c-à-d compatible excel
NUMERO ADHERENT
NOM
ADRESSE
PROFESSION
MATRICULE

1358
dupond
35 rue de la paix
Conducteur de travaux
125983

1680
durand
456 avenue Montparnasse
menuisier
335789



Comment procéder ? Merci de vos lumières
GR







Avatar
Charabeuh
Bonjour,

Une solution sans VBA.
Beaucoup moins élégante que celle d' Hervé puisqu'elle oblige à mettre les mains dans le cambouis !
Elle est basée sur le fait qu'un enregistrement possède 11 lignes ; donc pour le N ième enregistrement:
le numéro d'adhérent est =index (A:A; 11*(N-1) +3)
le nom est =index (A:A; 11*(N-1) +5)
l'adresse est =index (A:A; 11*(N-1)+7)
la profession est =index (A:A; 11*(N-1) +9)
et le matricule est =index (A:A; 11*(N-1) +11)
A:A est la colonne où auront été recopiées les données de Word.

voir fichier :
http://cjoint.com/?jBv1uvopDq

Salut


"ghari" a écrit dans le message de news:48de6e1d$0$14921$
Bonjour,
je reçois un fichier Word contenant des enregistrements de plus de 150 individus sous la forme suivante
//
NUMERO ADHERENT
1358
NOM
dupond
ADRESSE
35 rue de la paix
PROFESSION
Conducteur de travaux
MATRICULE
125983
//
NUMERO ADHERENT
1680
NOM
durand
ADRESSE
456 avenue Montparnasse
PROFESSION
menuisier
MATRICULE
335789
//
je souhaiterais obtenir un tableau du type sous format texte tab ou csv c-à-d compatible excel
NUMERO ADHERENT
NOM
ADRESSE
PROFESSION
MATRICULE

1358
dupond
35 rue de la paix
Conducteur de travaux
125983

1680
durand
456 avenue Montparnasse
menuisier
335789



Comment procéder ? Merci de vos lumières
GR



Avatar
ghari
Bonsoir,

Merci pour vos coups de main Hervé et Charabeuh.
Pour le moment, j'ai adapté le script de Hervé au traitement de quelques uns
de mes fichiers.
Sur un petit fichier, ça marche impeccable.
Par contre sur des fichiers beaucoup plus gros ( 1500 ko pour l'ex. ) avec
12 colonnes, j'ai une erreur d'execution '6' et
je plante à la ligne I=I+1 pour dépassement de capacité.
comment dimensionner correctement ? Quelle est la limite du système
nombre de lignes max ?
J'avoue que j'ai un niveau un peu trop faible !

Merci de vos écalircissements
Cordialement
Ghari

"Hervé" a écrit dans le message de news:

Bonsoir,
Ouvre ton fichier Word et enregistre le au format .txt puis ferme le et
lance cette procédure (à mettre dans un module standard) aprés avoir
indiqué le bon chemin du fichier .txt. Les enregistrements seront placés
dans une feuille ensuite, à toi de savoir ce que tu veux en faire :

Sub Lire()
Dim Tbl() As String
Dim Ligne As String
Dim Resultat As String
Dim I As Integer
Dim L As Integer

'enregistrer le fichier dans Word au format
'.txt puis lancer cette proc avec le bon
'chemin
Open "C:Mon Fichier.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, Ligne
I = I + 1
ReDim Preserve Tbl(1 To I)
Tbl(I) = Ligne
Loop
Close #1

'intitulés des colonnes
[A1] = "NUMERO ADHERENT"
[B1] = "NOM"
[C1] = "ADRESSE"
[D1] = "PROFESSION"
[E1] = "MATRICULE"
L = 1
'inscription des valeurs
For I = 1 To UBound(Tbl)
Select Case Tbl(I)
'nouvel enregistrement délimité par "//"
Case "//"
L = L + 1
Case "NUMERO ADHERENT"
Cells(L, 1) = Tbl(I + 1)
Case "NOM"
Cells(L, 2) = Tbl(I + 1)
Case "ADRESSE"
Cells(L, 3) = Tbl(I + 1)
Case "PROFESSION"
Cells(L, 4) = Tbl(I + 1)
Case "MATRICULE"
Cells(L, 5) = Tbl(I + 1)
End Select
Next I

Erase Tbl()
End Sub


Hervé.



"ghari" a écrit dans le message de news:
48de6e1d$0$14921$
Bonjour,
je reçois un fichier Word contenant des enregistrements de plus de 150
individus sous la forme suivante
//
NUMERO ADHERENT
1358
NOM
dupond
ADRESSE
35 rue de la paix
PROFESSION
Conducteur de travaux
MATRICULE
125983
//
NUMERO ADHERENT
1680
NOM
durand
ADRESSE
456 avenue Montparnasse
PROFESSION
menuisier
MATRICULE
335789
//
je souhaiterais obtenir un tableau du type sous format texte tab ou csv
c-à-d compatible excel
NUMERO ADHERENT
NOM
ADRESSE
PROFESSION
MATRICULE

1358
dupond
35 rue de la paix
Conducteur de travaux
125983

1680
durand
456 avenue Montparnasse
menuisier
335789



Comment procéder ? Merci de vos lumières
GR







Avatar
Modeste
Bonsour® ghari avec ferveur ;o))) vous nous disiez :

Pour le moment, j'ai adapté le script de Hervé au traitement de
quelques uns de mes fichiers.
Sur un petit fichier, ça marche impeccable.
Par contre sur des fichiers beaucoup plus gros ( 1500 ko pour l'ex. )
avec 12 colonnes, j'ai une erreur d'execution '6' et
je plante à la ligne I=I+1 pour dépassement de capacité.
comment dimensionner correctement ? Quelle est la limite du système
nombre de lignes max ?



Dans la proc la variable I est de type Integer c-a-d inferieure à 32768
déclarer un type Long c-a-d inferieur à 2 147 483 647

attention toutefois la capacité d'une feuille avant Excel 2007 est limitée à 65536 lignes !!!

--
--
@+
;o)))
Avatar
ghari
Bonsoir,
Le traitement ci-dessous est pratiquement résolu, grace à hervé, sauf que
quelques fois, le contenu d'un champ, (par ex., le champ ADRESSE) comporte
plusieurs lignes avec un retour chariot en bout de chaque ligne.
Ce qui entraine la perte d'une partie des infos venant des autres lignes et
passage immédiat à l'autre champ PROFESSION.
Comment traiter ces retours chariot pour garder entier le contenu du
paragraphe ADRESSE et surtout sans enlever celui de la dernière ligne ?
D'avance Merci

Ghari



"ghari" a écrit dans le message de news:
48de6e1d$0$14921$
Bonjour,
je reçois un fichier Word contenant des enregistrements de plus de 150
individus sous la forme suivante
//
NUMERO ADHERENT
1358
NOM
dupond
ADRESSE
35 rue de la paix
PROFESSION
Conducteur de travaux
MATRICULE
125983
//
NUMERO ADHERENT
1680
NOM
durand
ADRESSE
456 avenue Montparnasse
PROFESSION
menuisier
MATRICULE
335789
//
je souhaiterais obtenir un tableau du type sous format texte tab ou csv
c-à-d compatible excel
NUMERO ADHERENT
NOM
ADRESSE
PROFESSION
MATRICULE

1358
dupond
35 rue de la paix
Conducteur de travaux
125983

1680
durand
456 avenue Montparnasse
menuisier
335789



Comment procéder ? Merci de vos lumières
GR



Avatar
Charabeuh
Bonsoir

Tu n'avais pas tout dit !


Basé sur le programme de Hervé, tu peux essayer ceci:

Option Explicit

Sub Lire()
Dim Tbl() As String
Dim Ligne As String
Dim Resultat As String
Dim I As long
Dim L As Integer
Dim C As Integer
Dim Prem As Boolean

'enregistrer le fichier dans Word au format
'.txt puis lancer cette proc avec le bon
'chemin
Open "C:toto.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, Ligne
I = I + 1
ReDim Preserve Tbl(1 To I)
Tbl(I) = Ligne
Loop
Close #1

'intitulés des colonnes
Range("A:E").Delete
[A1] = "NUMERO ADHERENT"
[B1] = "NOM"
[C1] = "ADRESSE"
[D1] = "PROFESSION"
[E1] = "MATRICULE"
L = 1
'inscription des valeurs
For I = 1 To UBound(Tbl)
Select Case Tbl(I)
'nouvel enregistrement délimité par "//"
Case "//"
L = L + 1
Case "NUMERO ADHERENT"
C = 1: Prem = True
Case "NOM"
C = 2: Prem = True
Case "ADRESSE"
C = 3: Prem = True
Case "PROFESSION"
C = 4: Prem = True
Case "MATRICULE"
C = 5: Prem = True
Case Else
If Prem Then
Cells(L, C) = Tbl(I)
Prem = False
Else
'on peut remplacer Chr(10) par ", " ou autre chose
'si on ne veut pas de saut de ligne
Cells(L, C) = Cells(L, C) & Chr(10) & Tbl(I)
End If
End Select
Next I

Erase Tbl()
End Sub

Cela fonctionne t il ?

Charabeuh





"ghari" a écrit dans le message de news:48e3e8be$0$18589$
Bonsoir,
Le traitement ci-dessous est pratiquement résolu, grace à hervé, sauf que
quelques fois, le contenu d'un champ, (par ex., le champ ADRESSE) comporte plusieurs lignes avec un retour chariot en bout de
chaque ligne.
Ce qui entraine la perte d'une partie des infos venant des autres lignes et passage immédiat à l'autre champ PROFESSION.
Comment traiter ces retours chariot pour garder entier le contenu du paragraphe ADRESSE et surtout sans enlever celui de la
dernière ligne ?
D'avance Merci

Ghari



"ghari" a écrit dans le message de news: 48de6e1d$0$14921$
Bonjour,
je reçois un fichier Word contenant des enregistrements de plus de 150 individus sous la forme suivante
//
NUMERO ADHERENT
1358
NOM
dupond
ADRESSE
35 rue de la paix
PROFESSION
Conducteur de travaux
MATRICULE
125983
//
NUMERO ADHERENT
1680
NOM
durand
ADRESSE
456 avenue Montparnasse
PROFESSION
menuisier
MATRICULE
335789
//
je souhaiterais obtenir un tableau du type sous format texte tab ou csv c-à-d compatible excel
NUMERO ADHERENT
NOM
ADRESSE
PROFESSION
MATRICULE

1358
dupond
35 rue de la paix
Conducteur de travaux
125983

1680
durand
456 avenue Montparnasse
menuisier
335789



Comment procéder ? Merci de vos lumières
GR