Lire CSV sans l'ouvrir

Bonjour et meilleurs voeux à tous.

Une fois de plus j'aurais besoin de vous.

J'ai un fichier Excel (macro) qui récupère divers infos sur les feuilles de ce classeur, jusque là tout va bien.

Je dois aussi vérifier si une "donnée" est présente dans un fichier CSV seulement celui ci fait plus de 1000 000 lignes et sur 3 colonnes (A.B et C), je ne peux donc pas le copier coller (se serait trop long)

J'ai beau chercher je ne trouve rien sauf cette source qui m'indique le nombre de ligne mais ce n'est pas vraiment mon but.

Pourriez vous m'aider ?

Eric

    Dim strFolder As String, strFile As String
    Dim MyData As String, strData() As String
    Dim FinalArray() As String
    Dim StartTime As String, endTime As String
    Dim n As Long, j As Long, i As Long
    strFolder = "C:\Users\moi\Desktop\Excel\"
    strFile = Dir(strFolder & "*.csv")
    n = 0
    StartTime = Now
    Do While strFile <> ""
        Open strFolder & strFile For Binary As #1
        MyData = Space$(LOF(1))
        Get #1, , MyData
        Close #1
        strData() = Split(MyData, vbCrLf)
        ReDim Preserve FinalArray(j + UBound(strData) + 1)
        j = UBound(FinalArray)
        For i = LBound(strData) To UBound(strData)
            FinalArray(n) = strData(i)
            n = n + 1
        Next i

        strFile = Dir
    Loop
    endTime = Now
    Debug.Print "Process started at : " & StartTime
    Debug.Print "Process ended at : " & endTime
    Debug.Print UBound(FinalArray)

Bonjour,

une proposition qui utilise une commande dos

Function cmdout(Commande)
    'execute une commande DOS
    Set cmd = CreateObject("WScript.Shell")

    Set resultat = cmd.Exec(Commande).stdout

    Do While Not resultat.AtEndOfStream
        lig = resultat.ReadLine
        if lig <> "" Then cmdout = lig: Exit Do
    Loop
    Set resultat = Nothing
    Set cmd = Nothing
End Function

Function findtext(texte, fichier)
'indique la présence ou non d'une chaine de caractères dans un fichier
    Commande = "find /C """ & texte & """ " & fichier
    reponse = cmdout(Commande)
    If reponse <> "" Then
        findtext = Mid(reponse, InStrRev(reponse, ":") + 1) + 0 > 0
    Else
        findtext = False
    End If
End Function

Sub aargh()
texte_a_trouver = "test"
fichier_ou_chercher = "d:\downloads\test.txt"
    If findtext(texte_a_trouver, fichier_ou_chercher) = True Then
        MsgBox "j'ai trouvé " & texte_a_trouver & " dans le fichier " & fichier_ou_chercher
    Else
        MsgBox "pas trouvé"
    End If
End Sub

Merci pour ton aide.

Je vais y regarder ce week-end

Bonsoir

Je viens de voir que tu as un mac. Cette solution ne devrait fonctionner que sur pc.

Merci mais j'ai les 2, et ton programme me servira sur un PC le seul truc que je doute c'est sur le "CreateObject" , je ne sais pas si ça va marcher mais on verra bien ;)

Rechercher des sujets similaires à "lire csv ouvrir"