Bonjour,
je voudrais lire un fichier texte en binaire, mais j'ai l'impression qu'il est trop gros (222Mo). voici mon code (que j'ai copié à je ne sais plus qui) :
Au décodage, à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Dim nomFichier As String, numFile As Integer Dim errCode As Integer Dim errString As String Dim fileContent As String Dim t() As String fileContent = ReadFileToBuffer(nomFichier, errCode, errString) If errCode = 0 Then ... Else ' Erreur rencontrée, affichage MsgBox "Erreur lors de la lecture. Code : " & errCode & ". Description : " & errString End If ' Cette fonction lit le contenu du fichier szFileName et retourne ' ce contenu. En cas d'erreur, elle retourne une chaîne vide et ' renseigne le code d'erreur et la description de l'erreur ' Private Function ReadFileToBuffer(ByVal szFileName As String, _ ByRef errCode As Integer, _ ByRef errString As String) As String Dim f As Integer Dim Buffer As String ' trappe les erreurs On Error GoTo ReadFileToBuffer_ERR ' Ouverture du fichier en 'Binary' f = FreeFile Open szFileName For Binary As #f ' préallocation d'un buffer à la taille du fichier Buffer = Space$(LOF(f)) ' lecture complète du fichier Get #f, , Buffer Close #f ReadFileToBuffer = Buffer ReadFileToBuffer_END: Exit Function ReadFileToBuffer_ERR: ' Gestion d'erreur ReadFileToBuffer = "" errCode = Err.Number errString = Err.Description Resume ReadFileToBuffer_END End Function, on passe directement à
Code : Sélectionner tout - Visualiser dans une fenêtre à part Get #f, , Buffer
(sans fermer le fichier du coup !!), et le message d'erreur c'est : "Erreur lors de la lecture. Code 7 Description : mémoire insuffisante"
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReadFileToBuffer_ERR:
J'ai lu que pour des gros fichier il faut faire du file mapping, mais après avoir cherché un certain temps, je n'ai rien trouvé de concret sur comment on l'utilise en vba. Est--ce que quelqu'un saurait me donner une base de code pour faire du fileMapping ?
(mon but au fait étant d'ajouter une ligne à la fin de mon fichier si la dernière ligne respecte certaines conditions)
Merci![]()
Partager