Kikim,
Je te propose le code VBA suivant à intégrer au choix dans ACCESS ou EXCEL :
Sub SplitHugeFile()
Const cNbLines = 1000000
Dim oFS As Object
Dim oTSIn As Object
Dim oTSOUT As Object
Dim sFileNameIN As String, sFileNameOUT As String
Dim sBuffer As String, lnbFiles As Integer
Dim lPos1 As Long, lPos2 As Long, i As Long
Set oFS = CreateObject("Scripting.Filesystemobject")
'Recherche du fichier à splitter
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Show
'Si un fichier a été selectionné
If .SelectedItems.Count > 0 Then
'Récupération du nom du fichier sélectionné
sFileNameIN = .SelectedItems(1)
lPos1 = InStrRev(sFileNameIN, "\") 'Position de début du nom de fichier d'entrée sans le chemin
lPos2 = InStrRev(sFileNameIN, ".") 'Position de l'extention du fichier d'entrée
If lPos2 = 0 Then
'S'il n'y a pas d'extention : on se positionne à la fin du nom de fichier d'entrée
lPos2 = Len(sFileNameIN)
End If
'Ouverture du fichier d'entrée en lexture
Set oTSIn = oFS.OpenTextFile(sFileNameIN, 1)
'Composition du nom du fichier de sortie
lnbFiles = 1
sFileNameOUT = Left(sFileNameIN, lPos1) & Mid(sFileNameIN, lPos1 + 1, lPos2 - lPos1 - 1) & "_" & lnbFiles & ".csv"
'On créé le premier fichier en sortie
Set oTSOUT = oFS.CreateTextFile(sFileNameOUT, True)
Do Until oTSIn.AtEndOfStream
'On boucle sur le nb de lignes voulu
For i = 0 To cNbLines - 1
'On lit une ligne du fichier en entrée
sBuffer = oTSIn.ReadLine
'On écrit la ligne dans le fichier de sortie
oTSOUT.WriteLine sBuffer
'Si on se trouve en fin de fichier d'entrée, on sort de la séquence
If oTSIn.AtEndOfStream Then
Exit Do
End If
Next
'On ferme le fichier de sortie
oTSOUT.Close
'Composition du prochain nom du fichier de sortie
lnbFiles = lnbFiles + 1
sFileNameOUT = Left(sFileNameIN, lPos1) & Mid(sFileNameIN, lPos1 + 1, lPos2 - lPos1 - 1) & "_" & lnbFiles & ".csv"
'On créé le prochain fichier de sortie
Set oTSOUT = oFS.CreateTextFile(sFileNameOUT, True)
Loop
'On ferme le fichier de sortie
oTSOUT.Close
'On fait le ménage
oTSIn.Close
Set oTSIn = Nothing
Set oTSOUT = Nothing
Set oFS = Nothing
End If
End With
End Sub