[VB6] probleme de virgule

Bonjour,

1/ lorsque j’importe un fichier csv dans access avec mon prog en vb6, il apparaît des problèmes lorsque il y a des virgules dans le fichier csv , par exemple lorsque dans le fichier csv il y a:

Monsieur;Dupont;Jean;25, avenue de la république; 23; etc…

En faite le fichier de départ il est sous excel,ensuite je le converti en .csv pour pouvoir l’importer sur access grâce à mon programme en vb6. Voici le code:

Private Sub Command1_Click()
On Error GoTo erreurcor20
Dim dynposteimp As Recordset
Dim DT1 As Recordset
Set DT1 = gCurrentDB.OpenRecordset("T1", dbOpenDynaset)

With CommonDialog1
  .DialogTitle = "Open File [CSV]"
  .Filter = " Text Files (*.CSV) |*.csv|All files (*.*) |*.*"
  .FilterIndex = 1
  .Flags = cdlOFNCreatePrompt And cdlOFNExplorer
  .ShowOpen
End With

 If CommonDialog1.Flags = 0 Then
 Exit Sub
 End If

Dim lignestring, problemeImp As String

probleme = "problème au niveau de l'importation"

chemin2 = CommonDialog1.FileName
NumFile_s = FreeFile
Open chemin2 For Input As #NumFile_s
While Not EOF(NumFile_s)
Input #NumFile_s, lignestring

If lignestring = "" Then
'dynposteimp.Close

Close #NumFile_s
Exit Sub
End If

placech1 = InStr(1, lignestring, ";", vbTextCompare)
If placech1 = 0 Then
  DT1.Close
  Close #NumFile_s
  MsgBox probleme
  Exit Sub
End If

Donc à partir de là, le code a récupéré le premier mot terminé par un point virgule. Or si ce premier mot comporte une virgule alors l’import ne marche pas je comprend pas pourquoi. (a noté qu’il s’agit simplement du début de mon code)

up

Peut être qu’il faudrait que tu ajoutes des quotes lorsque tu tombes sur une virgule, ça donnerais “25”," avenue de la république".

Karl> ce qui n’est pas logique, c’est qu’il n’utilise pas une classe faisant ça. Et qu’il cherche bien le caractère ‘;’

Tu devrais afficher ce que contient ta ligne.

aujourd’hui encore je reste au même point, je ne trouve pas d’idée même dans mon gros bouquin sur visual basic.

Est-ce qu’il faut que je change complètement mon code d’exportation ?

je ne comprend pas

Pourquoi passé par un fichier csv. Access et Excel dialogue très bien ?

MsgBox line;

ou echo line;

Je sais pas je fais pas de VB, mais la première chose que je ferais c’est d’afficher ce que ton logiciel a en lecture puisque c’est ça qui pose problème :slight_smile:

debug.print line

plutot que changer tout ton code, avant de commencer à l’executer, tu remplaces tout les virgules par rien,
ou par un autre caractère, et une fois ton import fini, tu remplaces ce caractère par une virgule

Cloch Hard, ça, ça s’appelle du bidouillage, pas du développement :??:

Quant à toi Predateur1, tu peux essayer avec la fonction split pour découper ta chaîne. Tu n’auras peut être plus le problème de la virgule --> à tester !

Pour Info : monTab = Split(maChaine,monSéparateur)

Dans ton cas :
monTab = Split(lignestring,";")
placech1 = monTab(0) ou monTab(1), je ne sais plus quel est le 1er indice des tableaux en VB !

J’espère que ça pourra t’aider.