Données CSV vers Table

Signaler
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013
-
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013
-
Bonjour



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 





 




J’ai un fichier.TXT comme suite :



 




2007|01|102108|61|S|COSSE BATTERIE|300.25|



 




Je voudrais transfère  ces données dans une table en respectant la taille des champs :



 




Anne CHAR 4


Mois CHAR 2


STRCTURE   CHAR 10


COMPTE  CHAR 6


DESIGNATION  CHAR 45


MONTANT  NUMERIQUE  18.2



 




Quel est le code nécessaire pour le transfert   MILLE MERCI



 





 

17 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Va falloir être plus précis j'ai pas trop compris quel était le problème.

NOTE: la prochaine choisi un titre plus explicit que celui ci

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Split pour découper tes champs

ensuite, une simple requete d'insertion...

avec un Left$ pour tronquer tes données importées, au cas où
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
post renommé
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

Salut

Soit plus precis Renfield donne moi le Code SVP


Merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Ou la limite je trouve le "donne moi le code SVP"

PETIT RAPPEL

<ol><li>On fait une recherche sur le site avant de poster une question.</li><li>On est poli : « bonjour » et « merci » sont des mots appréciés.</li><li>On utilise un langage correct : pas de langage SMS, et on fait attention à l'orthographe.</li><li>On demande une explication sur un sujet précis, on ne l'exige pas.</li><li>On ne pose qu'une question par topic.</li><li>On pose une question aussi précise que possible.</li><li>On précise les détails du problème : contexte, langage, message d'erreur ...</li><li>On pense à donner le bout de code qui pose problème, et préciser le langage utilisé.</li><li>On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème
concret.
</li><li>On pense à laisser un petit message lorsqu'un problème est résolu et à cliquer
sur le bouton « réponse acceptée ».</li></ol>

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut et bonjour à tous,

En ce moment cela y va les : donne moi un code STP.....Faut pas croire zaatout, que les membres du site sont à ta disposition...

Faut quand même faire un minimum de recherche et en plus avec ce que vient de te dire Renfield...

La touche F1 de ton clavier ne fonctionne pas ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

je m'excuse je me retire de ce forum
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Ne le prend pas mal, ce sont là juste des explication sur le fonctionnement du forum...Lis le réglement et tu va vite comprendre pourquoi tu as ces réponses...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

Bonjour  je m'excuse j'ete absent

pour plus dinformation je travaille sur le systeme unix et je programme sur informix bref

j'ai des donnees sur une table infomix pour les extraire je fais

dbunload to cons.txt select * from mouvement , le probleme le dbunload ne respect pas la taille des champs donc les donnes sont transfere comme suite
2007|01|102108|61|S|BRIDE|200,02|
2007|01|108101|61|S|ACIDE 28|28,41|

donc mois j'aimerais les avoir dans le formats suivant
champ1  4 caractere
champ2   2 caractere
champ3   10 caractere
champ4    6 caractere
champ5   20 caractere
champ6   11 caractere
donc prendre en consideration les blancs

200701102108    61    SBRIDE                    200,02
200701108101    61    SACIDE 28               28,41

j'ai trouve ce bout de code en VB6 qui lie et affiche le contenu de cons.txt

donc je voudrai bien ke kelk1 m'aide a modifie les ligne

mille merci
Private Sub ReadAllLines(ByVal sPath As String, ByRef aLines() As String)
Dim Buf As String
       On Error Resume Next
    Open sPath For Input As #1
     
              Buf = Input(LOF(1), #1)
    Close #1
    aLines = Split(Buf, vbNewLine)
End Sub


Private Sub Form_Load()
Dim toto As String
Dim aMesLignes() As String
Dim i, j As Long
Dim ligne As String


    Me.AutoRedraw = True
    Me.Show
   ReadAllLines "c:\cons.txt", aMesLignes
    Me.Print (1 + UBound(aMesLignes)) & " Enregistrements" & vbNewLine
    For i = LBound(aMesLignes) To UBound(aMesLignes)
        Me.Print aMesLignes(i)
           
    Next i
End Sub


 
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Tu pourrais peut-être essayer en te créant un Type avec le nombre d'items nécessaire et de longueurs définies selon les besoins.

ex:
Type MyType
    Champ1 as String * 4
    Champ2 as String * 2
    Champ3 as String * 10
    Champ4 as String * 6
    Champ5 as String * 20
    Champ6 as String * 11 ' ou As Double
End Type
Dim MonType as MyType

(MonType pourrait être un tableau de type MyType)

Difficile d'expliquer plus précisément sans voir le fichier ... et sans savoir exactement ce que tu dois faire avec ces données qui semblent devoir être de longueurs fixes.

Donc, un premier Split sur vbcrlf ou vbnewline pour récupérer chaque ligne du fichier.
Et un autre Split sur le séparateur pour récupérer chaque partie de cette ligne.
Et tu affectes chaque item de cette ligne à une partie de "MonType"
MonType.Champ1 = Tablo(0)
..............

MPi
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

Merci pour la Reponse
mais voila si vous pouvez me donner plus de details SVP je n'arrive pas a mettre a jour le fichier cons.txt en respectant la longeur des champs

c'est URGENT SVP
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut et bonjour MPI,

Attention le mot Urgent est à proscrire...lol...
A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

Salut

Vraiment je suis bloque 
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Et où es-tu bloqué ?

MPi
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

Bonjour : Voici mon code d'affichage  du fichier .txt

Dim aaaa As String * 4
Dim mm As String * 2
Dim cptcae As String * 10
Dim compte As String * 6
Dim libelle As String * 30
Dim montant As String * 11


Option Explicit
Private Sub ReadAllLines(ByVal sPath As String, ByRef aLines() As String)
Dim Buf As String
       On Error Resume Next
    Open sPath For Input As #1
     
              Buf = Input(LOF(1), #1)
    Close #1
    aLines = Split(Buf, vbNewLine)
End Sub


Private Sub Form_Load()
Dim toto As String
Dim aMesLignes() As String
Dim i, j As Long
Dim ligne As String


    Me.AutoRedraw = True
    Me.Show
   ReadAllLines "c:\cons.txt", aMesLignes
    Me.Print (1 + UBound(aMesLignes)) & " Enregistrements" & vbNewLine
    For i = LBound(aMesLignes) To UBound(aMesLignes)
        Me.Print aMesLignes(i)
           
    Next i
End Sub


je n'arrive pas  a mettre a jour ce fichier .txt en respectant les tailles des champs .Les donnees sont affiche comme ça

2007|01|102102|61|ACIDE|300,25

j'aimerai les avoir comme suite

200701102102    61   ACIDE                         300,25

 DONC

le 1er champ    string*4
le 2eme champ string*2
le 3eme champ string*10
le 4eme champ string*6
le 5eme champ string*30
le 6eme champ string*11

JE CROIE QUE VAUS AVAEZ COMPRIS LE PROBLEME

A BIENTOT ET MERCI
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Dans to Form_Load, tu appelles une fonction (Sub) qui crée un tableau qui te donne ce genre de ligne
2007|01|102102|61|ACIDE|300,25

Donc, dans ta boucle, tu dois faire un autre Split sur le caractère "pipe" qui semble être ton séparateur et tu récupéreras chaque item de la ligne

    For i = LBound(aMesLignes) To UBound(aMesLignes)
'        Me.Print aMesLignes(i)
         MonAutreTableau = Split(aMesLignes(i), "|")  ' mettre le bon séparateur
        For j = 0 to UBound(MonAutreTableau)
            msgbox(MonAutreTableau(j))         
       Next j
    Next i

est-ce que ça aide un peu ?

MPi
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

Bonjour

Merci du code que vous m'avez ecrie mais je n'arrive pas a l'interprete dans mon programme est ce que  vous voulez bien l'ajoute a mon programme.
merci