Fichier .csv

cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005 - 30 juin 2004 à 02:44
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005 - 3 juil. 2004 à 17:04
J'ai vu beaucoup de chose sur la facon de lire fichier .csv

mais étant donné que je suis débutant j'ai beaucoup de difficulté à bien programmé ce que je veux

j'ai un fichier ......denis.csv

je veux à partir de vb lire ce fichier trouver la ligne qui correspond à un numéro de stock donné (qui se trouve dans la 2 ième colonne du fichier denis.csv) et retiré certaines informations de cette ligne et les placer dans des champs texte
je n'ai pas besoin de modifier ce fichier (denis.csv).......il est la pour consultation seulement

est-ce que quelqu'un pourrait m'écrire un petit bout de code pour faire cela

Merci

gronon2

9 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
30 juin 2004 à 06:16
Pour séparer ce genre de données (avec séparateur), tu peux utiliser la fonctione Split , qui va éclater ta chaine dans un tableau :

Dim Donnees() as String

'# Buffer contient ce que j'ai précédemment lu dans le fichier
Donnees = Split ( Buffer , ";" )
0
cs_mrou Messages postés 7 Date d'inscription jeudi 10 juillet 2003 Statut Membre Dernière intervention 30 juin 2004
30 juin 2004 à 11:41
Global ton_fichier As Object

Set ton_fichier = CreateObject("excel.application")

ton_fichier.Application.Visible = False

'ce fichier est au format csv

ton_fichier.Workbooks.OpenText FileName:= _
"chemin du fichier", Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=True, _
Space:=False, Other:=False, TrailingMinusNumbers:=True
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
30 juin 2004 à 13:22
Peux tu nous donner un exemple concret ...

Merci

It@li@
0
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005
1 juil. 2004 à 18:02
J'ai appliqué ceci pour lire fichier .csv

Dim ligne As String

Open "c:\VB98\hebdonet\denis.csv" For Input As #1

Input #1, ligne

tableau = Split(ligne, ",", -1)
Label6.Caption = tableau(0)
Input #1, ligne

tableau = Split(ligne, ",")
Label7.Caption = tableau(0)

Close #1

dans mons csv la première ligne donne le titre des colonnes

Si je fais focntionner cette routime j'obtiens

label6.caption = TYPE et c'est vrai c'est le titre de la 1 ière colonne
label7.caption = #STOCK et c'est vrai c'est le titre de la 2 ième colonne

ce que je veux mainteant c'est de pouvoir lire la deuxieme ligne....comparer #STOCK à un numéro quelquonque et si ils sont pareil retire l'info du TYPE qui si trouve

Serait-ce facile pour quelqu'un d'entre-vous
0

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

Posez votre question
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
2 juil. 2004 à 08:16
Donnes moi les 5 premiére ligne de ton fichier .csv et exactement ce que tu veux obtenir..

je te fais ton code

It@li@
0
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005
2 juil. 2004 à 17:29
Voila

1 iere ligne

Type,"#Stock","NIV","Année"

2 ieme ligne

Camion,"405-141","KNADC123926090073",2002

3 ieme ligne

Auto,"406-160","KNADC123X26091426",2002

4 ieme ligne

Fourgonnette,"403-127","1FAFP33P41W119254",2001

4 ieme ligne

Auto,"402-123","1FAFP33P51W111857",2001

if XXXXX= "406-160" then
label6.caption = XXXXXX ...........(Type)
end if
0
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005
3 juil. 2004 à 05:10
Ok ITALIA j'ai solutionner mon problème et ca marche bien

j'espère que je ne t'ai pas fait travailler pour rien

mais j'ai une colle pour vous

j'ai un ligne de texte comme celle-ci

Auto,"405-141","KNADC123926090073",2002,"KIA","RIO","sedan base","2004122205848706_200467104726995-orig.jpg",6999,,"Occasion","Manuel",80800,4,"","Bleu pâle","BLEU ACIER","Gris","FWD","1.5",4,"Essence","Berline","AM/FM Stéréo, Cassette, Coussins gonflables doubles, Dégivreur arrière, Enjoliveur de roues, Servo-direction, Servo-freins, Aileron,","EXCELLENTE PETITE BERLINE, TRÈS ÉCONOMIQUE !!!!!","","BALANCE DE GARANTIE KIA DE 5 ANS OU 100 000 KM","Disponible",,"ACHAT: $31.50/SEM.",""

Comme vous pouvez le constater dans cette ligne il y a beaucoup de virgule et de "

Il y a une partie de ce texte qui commence par BALANCE DE GARANTIE.....
cette partie de cette ligne ne se retrouve pas nécessairement toujours à la meme place ..ou plutot apres un nombres de fixe de virgules
c'est pour cette raison que je ne peux utiliser la fonction split jumelé à tableau(X)

Je voudrais à l'aide de VB lire cette ligne trouver le mot BALANCE et retirer ce même mot et tout ce qui vient apres jusqu'à la virgule suivante (dans l'exemple ci dessus..le résultat serait BALANCE DE GARANTIE KIA DE 5 ANS OU 100 000 KM"

C'est -il fesable ????
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
3 juil. 2004 à 08:04
a partir du moment où tu as ton tableau de champs, il est possible de faire a peu près ce que tu veux... ;)

Dim Donnees() as string

Donnees = Split ( Texte , "," )

Dim i as integer
'# On va parcourir le tableau
for i = 0 to Ubound ( Donnees )
'# Teste les 7 premières lettres
if Left$ ( Donnees(i) , 7 ) = "BALANCE" then
'# On a trouvé le champ
MsgBox Donnees(i)
Exit For '# On sors du For
endif
next i
0
cs_gronon2 Messages postés 43 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 16 septembre 2005
3 juil. 2004 à 17:04
Un gros merci à tous

tout focntionne très bien
0