Ouvrir fichier 2Go via Excel ?
Fivel51
Messages postés
510
Statut
Membre
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
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 docx ? - Guide
- Comment ouvrir un fichier dat - 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.