Ouvrir fichier 2Go via Excel ?
Fivel51
Messages postés
463
Date d'inscription
Statut
Membre
Dernière intervention
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 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
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
A voir également:
- Comment ouvrir un fichier wbk?
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Comment ouvrir un fichier dat - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
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 :
J'ai pas de fichier plus gros mais ça devrait fonctionner jusqu'à 1 million de lignes.
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.