Ouvrir fichier 2Go via Excel ?
Fermé
Fivel51
Messages postés
462
Date d'inscription
dimanche 21 mai 2017
Statut
Membre
Dernière intervention
20 août 2023
-
10 mai 2020 à 19:28
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 10 mai 2020 à 20:42
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 10 mai 2020 à 20:42
A voir également:
- Comment ouvrir un fichier 2 ?
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment ouvrir un fichier dat - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
M-12
Messages postés
1331
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
8 avril 2023
283
10 mai 2020 à 20:23
10 mai 2020 à 20:23
Bonjour,
A mon avis, ton fichier est corrompu
Un CSV de 2Go ???
A mon avis, ton fichier est corrompu
Un CSV de 2Go ???
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 10 mai 2020 à 20:53
Modifié le 10 mai 2020 à 20:53
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.