VB6 - Problème fonction Split et virgule... [Résolu]

cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 22 sept. 2009 à 20:23 - Dernière réponse : cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention
- 24 sept. 2009 à 23:13
Bonjour à tous,

Je suis en train de créer un logiciel de gestion d'entreprise, il charge des fichiers dont certaines zone sont structurés comme des *.csv d'excel, c'est à dire que les données de chaque lignes sont séparés par des point virgules " ; ".

Je découpe donc ma chaine avec la fonction Split avec les " ; " comme séparateur, mon problème est que quand la chaine contient de simples virgules " , " il me créer aussi une séparation à leurs niveaux... Je suis un peut troublé et un peu déçu aussi par ce petit bug (ou ce que je crois en être un)

J'ai essayer tout les modes de comparaison mais rien n'y fait...

Je suis épaté de voir qu'une fonction split est capable de différencier des "CR", "LF" et "CRLF" mais pas des " ; " de " , "...

Voilà alors si quelqu'un à une solution à me proposé je suis tout oui...

Je suis obligé de stoquer des virgules dans mes fichiers car ce sont des chiffre qui me resserviront pour des calcul et vb ne calcule pas sur un " . " et puis en plus je ne veut pas faire de bricolage.

Au pire je vais devoir réinventé la roue : refaire un module avec une fonction Split_No_Bug...

Mais j'ai pas trop le temps pour ce genre de conneries lol

Merci à ceux qui me répondrons.

Bon codage !

Guillaume
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 22 sept. 2009 à 21:52
3
Merci
Bonjour,

ouvre ton aide en ligne et intéresse-toi à la différence entre Input et Line Input

Merci jmf0 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de jmf0
Meilleure réponse
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 22 sept. 2009 à 21:54
3
Merci
C'est bon j'ai trouvé comment ne pas séparé ma ligne en 2 !!! C'est pourtant con mais j'avoue que je ne m'en été jamais servi....

            Open FileChemin For Input As #1
                While Not EOF(1)
                    Line Input #1, intval
                    varTemp = varTemp & intval & vbCrLf
                Wend
            Close 1



J'ai juste rajouter le mot "line" et tout se passe bien !!!

Guillaume

Merci cs_magicgus 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de cs_magicgus
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 22 sept. 2009 à 20:41
0
Merci
Oups !

Je vient de refaire le test suivant dans une autre form et ça marche, je ne comprend pas d'ou vient le problème ...

Private Sub Command1_Click()
    Dim a() As String
    a = Split(Text1.Text, ";")
    For i = 0 To UBound(a)
        List1.AddItem a(i)
    Next i
End Sub


???

Guillaume
Commenter la réponse de cs_magicgus
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 22 sept. 2009 à 20:50
0
Merci
Bonsoir,

Ton 1er test (que tu ne nous as pas montré) ou le fichier traité (que tu ne nous as pas montré) n'est/ne sont pas le(s) même(s) que ceux du seul code que tu nous montres.
Aucune autre explication n'est possible
Commenter la réponse de jmf0
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 22 sept. 2009 à 21:09
0
Merci
"Je suis obligé de stoquer des virgules dans mes fichiers car ce sont des chiffre qui me resserviront pour des calcul et vb ne calcule pas sur un " . " et puis en plus je ne veut pas faire de bricolage. "


NON !

toujours stocker les données en international :

33.45 et non 33,45

etc

et les dates: 2009-09-22

Val et CDate feront la conversion vers les données types.
Format$ et CStr feront la conversion vers ces chaines international.

http://blogs.codes-sources.com/renfield/archive/2009/04/14/param-tres-r-gionnaux-en-g-n-ral-et-avec-vb6.aspx



Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 22 sept. 2009 à 21:24
0
Merci
Pas bete, merci Reinfield

Toujours est-il qu'apres quelque recherche dans mon code j'ai trouvé le coupable et en fait ce n'est même pas dutout un split mais bien une ouverture de fichier...

            
'Extraction des doonées
            Open FileChemin For Input As #1
                While Not EOF(1)
                    Input #1, intval
                    varTemp = varTemp & intval & vbCrLf
                Wend
            Close 1


Dés que j'arrive sur une ligne qui contient une virgule il me simule un passage à la ligne...

Mon fichier :
[rgcfile]
Type=initable
About=Fichier client
[parameters_MSFlexGrid]
ColsNames=Code produit;Catégorie;Désignation;Tarif unitaire HT;Pourcentage;Classification;Type
ColsSizes=2175;4215;1140;1140;1140;1140;1140
ColsAlign=0;0;0;0;0;0;0
FixedCols=0
FixedRows=1

[bdd_initype_table_data]
gkfsjgklfjksljkf gsfd
gsdfgfsdgfsdgfsdgdsfgdfs, fdgsdfgsfdg
fsgfs
gfdgsdfgd


Au lieu d'avoir la ligne suivante :
gsdfgfsdgfsdgfsdgdsfgdfs, fdgsdfgsfdg

Il me donne deux ligne :
gsdfgfsdgfsdgfsdgdsfgdfs
fdgsdfgsfdg

Je ne comprend pas plus à vrai dire lol

Mais toujours ouvert à un coups de main car bien que je vais passer dans un format international j'aurais quand même des virgules pour des adresse par exemple...

Guillaume
Commenter la réponse de cs_magicgus
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 22 sept. 2009 à 21:26
0
Merci
Je dirais même toujours stocker, dans la mesure du possible, les données dans leur type réel.

Dans la mesure du possible, on converti au plus tôt les données et on préfèrera stocker un Double =33.45 plutôt qu'une String="33.45"


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 22 sept. 2009 à 21:26
0
Merci
Faites pas gaffe à la gueule du fichier au passage, il me lit dedans comme un ini, pour le reste il coupe en deux pour ne prendre que la partie des données à stoquer dans un flexgrid...

J'aime bien mélanger les genres...


Guillaume
Commenter la réponse de cs_magicgus
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 22 sept. 2009 à 21:27
0
Merci
casy : libre à moi de les reconvertir après, mais dans un fichier comme le miens n'est t'il pas mieux que de tout charger en string et de reconvertir aprs ?

Guillaume
Commenter la réponse de cs_magicgus
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 22 sept. 2009 à 21:55
0
Merci
En meme temps lol

Merci jmf0...

Je vient de le trouver lol

En tout cas merci à tous pour votre rapidité de réponse !

Guillaume
Commenter la réponse de cs_magicgus
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 22 sept. 2009 à 22:26
0
Merci
pas forcément top en temps de réponse, de lire ligne par ligne: outre les n accès au fichier, vb va chercher les crlf, etc.

du coup, c'est plutot lent.

si tes fichier ont une taille raisonnable, tu dois pouvoir les stocker en mémoire en entier.
te suffira de traiter un tableau de lignes.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 23 sept. 2009 à 18:57
0
Merci
Renfield : lol

Je ne parler pas de se temps de réponse mais du forum... ;)


Guillaume
Commenter la réponse de cs_magicgus
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 sept. 2009 à 05:02
0
Merci
j'avais saisi ^^

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
cs_magicgus 207 Messages postés mardi 10 février 2004Date d'inscription 14 septembre 2011 Dernière intervention - 24 sept. 2009 à 23:13
0
Merci
;)


Guillaume
Commenter la réponse de cs_magicgus

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.