Ouvrir fichier 2Go via Excel ?

Fivel51 Messages postés 510 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je cherche à ouvrir un fichier .csv sur Excel.
A l'heure actuel, ça ouvre Excel quand je double clique dessus, mais ça n'ouvre pas les données du fichier. Le fond est gris, aucune cellule visible.
Sinon j'ai essayé de l'ouvrir avec NotePad++ mais j'ai le msg d'erreur : "file is too big to be opened".
J'ai essayé de l'ouvrir avec OpenOffice mais il me dit qu'il n'a chargé qu'une partie des données.

SVP, comment puis-je ouvrir ce fichier ?
Je vous remercie
Bonne soirée

2 réponses

  1. M-12 Messages postés 1349 Statut Membre 285
     
    Bonjour,

    A mon avis, ton fichier est corrompu
    Un CSV de 2Go ???
    0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
     
    Bonjour,

    J'ouvre sans problème des csv jusqu'à 11 Go (380 000 lignes et 4 colonnes) grâce à une lecture ligne à ligne via un stream ADODB, par exemple pour un fichier encodé en utf8 :
    ' Établir la référence à ADODB :  Microsoft ActiveX Data Objects 6.1 Library
    Option Explicit
    Option Private Module
    Public Const sepV$ = ","     'séparateur de valeurs
    Public Const sepL$ = vbCrLf  'séparateur de lignes
    Public Const idTxt$ = """"   'identificateur de texte chr(34)
    
    Sub Lire_fichier_csv_UTF8()
    ' Exemple
    Dim wbk As Workbook
    Dim nomComplet As Variant
      nomComplet = Application.GetOpenFilename("Fichiers csv, *.csv")
      If nomComplet = False Then Exit Sub
      Set wbk = mImportCsv.Lire_csv_UTF8_avec_ou_sans_BOM(nomComplet)
    End Sub
    
    Public Function Lire_csv_UTF8_avec_ou_sans_BOM(ByVal nomCompletFichier As String) As Workbook
    ' 16/01/19  Patrice33740 V1-0-00
    ' Pour les valeurs de Stream.Charset, voir dans le registre : HKEY_CLASSES_ROOT\MIME\Database\Charset
    Dim fUtf8 As ADODB.Stream
    Dim wbk As Excel.Workbook
    Dim cel As Range
    Dim txt As String
    Dim lgn As String
    Dim lgr As Long
      Application.ScreenUpdating = False
      Application.Calculation = xlCalculationManual
      Set wbk = Application.Workbooks.Add(xlWBATWorksheet)
      Set cel = wbk.Worksheets(1).Range("A1")
      Set fUtf8 = New Stream
      With fUtf8
        .Charset = "utf-8"                   ' ou pour windows = "ISO-8859-1"
        .Mode = adModeReadWrite
        .Type = adTypeText
        .LineSeparator = adCRLF
        .Open
        .LoadFromFile nomCompletFichier
        Do Until .EOS
          txt = .ReadText(-2)         '-2 = une ligne
          lgn = lgn & txt
          lgr = Len(lgn) - Len(Replace(lgn, idTxt, ""))
          If (lgr Mod 2) = 0 Then
            Call EcrireLigneCSV(lgn, cel)
            Set cel = cel.Offset(1)
            txt = "": lgn = ""
          Else
            lgn = lgn & sepL
          End If
        Loop
        .Close
      End With
      Set fUtf8 = Nothing
      wbk.Worksheets(1).Columns.AutoFit
      wbk.Worksheets(1).Rows.AutoFit
      Application.Calculation = xlCalculationAutomatic
      Application.ScreenUpdating = True
      Set Lire_csv_UTF8_avec_ou_sans_BOM = wbk
    End Function
    
    Private Sub EcrireLigneCSV(lgn As String, cel As Range)
    ' Ecriture d'une ligne d'un fichier au format csv sur une feuille Excel
    ' 06/04/20 Patrice33740 V1-2-01
    Dim txt As String
    Dim frm As String
    Dim lgr As Long
    Dim nbC As Long
    Dim t As Variant
    Dim i As Long
      If lgn = "" Then Exit Sub
      t = Split(lgn, sepV)
      For i = LBound(t) To UBound(t)
        frm = txt & t(i)
        lgr = Len(frm) - Len(Replace(frm, idTxt, ""))
        If (lgr Mod 2) = 0 Then
          If Mid(frm, 1, 1) = idTxt Then
            frm = Mid(frm, 2, Len(frm) - 2)
            frm = Replace(frm, idTxt & idTxt, idTxt)
          End If
          cel.Offset(0, nbC).FormulaLocal = frm
          txt = "": nbC = nbC + 1
        Else
          txt = frm & sepV
        End If
      Next i
    End Sub
     


    J'ai pas de fichier plus gros mais ça devrait fonctionner jusqu'à 1 million de lignes.

    0