Lire un csv ou un txt fichier fermé

Épaf

XLDnaute Occasionnel
Bonjour,
Puisqu'on peut lire un xls fermé avec ADO, il doit être possible de lire un txt fermé... Pour un xls, j'ai ça
Code:
    Set adoc = CreateObject("adodb.connection")
    Set recd = CreateObject("adodb.recordset")
    adoc.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=d:\xls\Fichier.xls;Extended Properties=""Excel 8.0"";"
    recd.Open "select * from `Annuaire$`", adoc
Ce que je n'ai pas c'est l'aide en ligne pour modifier l' "Extended Properties"
Si vous avez une idée, par avance, merci
 

MichelXld

XLDnaute Barbatruc
Re : Lire un csv ou un txt fichier fermé

bonsoir


Tu peux utiliser cette syntaxe pour le modèle ADO

Code:
Sub importFichierTexte_ADO()
    Dim Rc As ADODB.Recordset
    Dim Cn As String, Chemin As String, Fichier As String
    Dim i As Long
    
    Chemin = "C:\Documents and Settings\michel\dossier"
    Fichier = "monFichier.txt"
    
    Cn = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "Dbq=" & Chemin & ";Extensions=asc,csv,tab,txt"
    
    Set Rc = New ADODB.Recordset
    Rc.Open Source:="SELECT * FROM " & Fichier, ActiveConnection:=Cn
    
    If Not Rc.EOF Then
        'For i = 0 To Rc.Fields.Count - 1 'recuperation entetes
        'Cells(1, 1).Offset(0, i) = Rc.Fields(i).Name
        'Next
        Range("A2").CopyFromRecordset Rc
    End If
    
    Rc.Close
End Sub



Une autre possiblité en utilisant QueryTable.
Exemple pour regrouper tous les fichiers txt d'un répertoire dans la feuille de calcul:

Code:
Sub Test()
    Dim Fichier As String, Chemin As String
    Dim i As Long
    
    'Répertoire contenant les fichiers
    Chemin = "C:\Documents and Settings\mimi\dossier"
    Fichier = Dir(Chemin & "\*.txt")
    
    'Boucle sur les fichiers
    Do While Fichier <> ""
        
        i = Range("A65536").End(xlUp).Row + 1
        ImportText Chemin & "\" & Fichier, Cells(i, 1)
        
        Fichier = Dir
    Loop
End Sub
 

Sub ImportText(NomFichier As Variant, Cible As Range)
    Dim QT As QueryTable
    
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
        NomFichier, Destination:=Cible)
    
    With QT
        'Définit les séparateur de colonnes dans le fichier txt
        .TextFileOtherDelimiter = ";"
        .TextFileSemicolonDelimiter = True
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .Refresh
    End With
End Sub



Bonne soirée
MichelXld
 

Épaf

XLDnaute Occasionnel
Re : Lire un csv ou un txt fichier fermé

Merci Michel, je n'en attendais pas moins de toi :)
J'étais arrivé à lire certaines données mais il me manquait la définition des séparateurs.
Je teste ça ce soir
Bonne soirée à toi
 

fredl

XLDnaute Impliqué
Re : Lire un csv ou un txt fichier fermé

Bonjour à tous et merci pour ce post qui me permet d'avancer sur ma démarche.

Je souhaiterai donc rebondir sur cette discution en vous demandant une information complémentaire:
Je viens d'utiliser la macro "importFichierTexte_ADO" qui fonctionne très bien.
Cependant, je souhaiterai lire mon fichier txt qui contient plusieurs lignes, ligne par ligne (et non en repercutant la totalité via le "CopyFromRecordset" dans mon fichier Excel)

ex :((mon fichier txt)

Fred
Pat
Raymond

et souhaiterais recupérer les noms un à un ("Fred", ensuite "Pat" puis "raymond" qui deviendront des variables dans mon code)
Hors lorsque je lance votre macro, "
Rc.Fields.Count"=1 et je ne
récupère donc que "Fred" de mon fichiertxt (Rc.Fields(0).Name="Fred" car seul "entete" detecté dans le fichier)


Chaque ligne doit elle avoir une "entête" pour etre reconnue comme "Fields"?
Si oui comment fait on pour declarer comme entete chaque ligne?

Ou peut etre y a t'il une autre maniere de faire?
Récupérer tout le texte dans une variable?
Si oui, comment fait on? (sachant que ensuite, je peux le traiter sans problème si je sais comment retrouver les passages à la ligne...)

Si vous avez des idées, je suis preneur

Merci vraiment pour votre aide!

Cordialement.

Frédéric



 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Lire un csv ou un txt fichier fermé

Bonjour,

Il faudrait connaître l'organisation du fichier (séparateur de champ)

Fichiers séquentiels

-Avec Line Input #, les caractères ',' ne sont pas considérés comme des séparateurs. Seuls les codes 13 et 10 sont considérés comme séparateurs.

Code:
   nf ="toto.txt"
   i=1
   Open nf For Input As #1
   Do While Not EOF(1)
      Line Input #1, ligne
      Cells(i,1)=ligne
   Loop
   Close #1


JB
 

Discussions similaires

Statistiques des forums

Discussions
312 352
Messages
2 087 538
Membres
103 582
dernier inscrit
didinex