Extraction données d'un fichier texte

TM20 Messages postés 2 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 14 mai 2007 - 14 mai 2007 à 15:56
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 14 mai 2007 à 16:32
Bonjour à tous et toutes,

voila, je sollicite l'aide de toute personne qui veut bien sur m'aider,
je cherche à lire un fichier csv sans excel, c'est à dire à le faire lire comme un fichier texte donc toutes les données apparaissent avec le ; comme séparateur ( ça j'y suis arrivé )

mais en suite je voudrais que cela extrait les données comme sous excel c'est à dire que par ex, le numéro 1 s'appelera M, le numéro 2, P, etc, mais tout cela sans utiliser les procédures VB qui utilise l'application Excel sachant que tout le monde n'a pas forcément excel, je voudrais trouver un moyen autre

enfin si quelqu'un arrive à me comprendre, sinon écrivez moi j'essayerai de vous expliquer un peu mieux,

merci d'avance à ceux qui prendront le temps de répondre

Michael

5 réponses

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
14 mai 2007 à 16:02
Salut, peut etre que cela te conviendrait (attention VBA et pas VB6 alors voir si différence)

Public Sub test3()
Dim fs, a
Dim ligne As String

Set fs = CreateObject("Scripting.FileSystemObject")
Set b = fs.OpenTextFile("Nom_chemin_complet_fichier", 1, 0)


ligne = b.Readline  'lire la première ligne et passe à la seconde
MsgBox ligne


ligne = b.Readline  'lire la seconde ligne passe à la troisième
MsgBox ligne


b.skipline          'Sauter la ligne


ligne = b.Readall   'Lire le fichier dans son ensemble à partir de la ligne courante
MsgBox ligne
b.Close             'Fermeture du fichier
End Sub
0
TM20 Messages postés 2 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 14 mai 2007
14 mai 2007 à 16:07
Niko,
déjà ce que tu m'as donné va m'aider grandement,
je suis toujours ouvert à d'autres propositions mais celle là est vraiment bien pour un début, me suffit maintenant juste que de séparer les données des lignes car en fait je veux juste lire les 5 premières lignes du fichier csv pour commencer,
merci de ton aide
Michael, programmateur pour ses loisirs mais rien de bien folichon lol
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 16:10
Salut,

autres solution, sans passer par FSO :

Option Explicit

Private Sub ReadAllLines(ByVal sPath As String, ByRef aLines() As String)
Dim FF As Integer
Dim sBuffer As String
    FF = FreeFile
    On Error Resume Next
    Open sPath For Input As #FF
        sBuffer = Input(LOF(FF), #FF)
    Close #FF
    aLines = Split(sBuffer, vbCrLf)
End Sub

' exemple d'utilisation
Private Sub Form_Load()
Dim aMesLignes() As String
Dim i As Long
    
    ReadAllLines "C:\Documents and
settings\mortalino\Bureau\test.txt", aMesLignes
    Me.Print (1 + UBound(aMesLignes)) & " lignes trouvées" & vbNewLine
    For i = LBound(aMesLignes) To UBound(aMesLignes)
        Me.Print aMesLignes(i)
    Next i
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Ensuite tu peux aussi faire un split de tes données par ligne avec ton séparateur, afin de décomposer les données de chaques lignes

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
14 mai 2007 à 16:22
Salut, mortalino, je suis intrigué a chaque fois par cette méthode, ca je la vois plus sauvant que la mienne
Open sPath For Input As #FF

Est elle meilleur, plus rapide ?
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 16:32
Viens de tester avec 65000 lignes, c'est pareil (à un ou deux dixieme de seconde)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
Rejoignez-nous