Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Macro] Importation un fichier CSV - Mémoire insuffisante

  • Initiateur de la discussion Initiateur de la discussion jiritsu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jiritsu

XLDnaute Nouveau
Bonjour,

Je fais actuellement une Macro pour importer un fichier CSV dans une feuille Excel. Mais mon code fonctionne uniquement avec des petits fichiers. J'ai une erreur : Mémoire insuffisante.

Code:
Private Sub Cmd_Click()
Dim ProductLine As String
Dim Tab1
Dim i, x As Integer
x = 0
Range("a4:n65536").Clear
Range("A4").Activate
ProductFile = Application.GetOpenFilename("csv files (*.csv), *.csv")
On Error Resume Next
Open (ProductFile) For Input As #1
       Do
        Line Input #1, ProductLine
        Tab1 = Split(ProductLine, ";")
        For i = 0 To UBound(Tab1)
            ActiveCell.Offset(x, i) = Tab1(i)
        Next i
        x = x + 1
    Loop While Not EOF(1)
    Close #1
End Sub

Il y a t-il un moyen d'optimiser ce code afin de faire disparaitre ce problème de mémoire ?

Merci de votre aide
 
Re : [Macro] Importation un fichier CSV - Mémoire insuffisante

Bonjour,

Ca plante pour des fichiers qui ont combien de lignes ?

Pourquoi ne pas ouvrir directement le fichier avec Excel qui reconnait le format CSV ?

Ci-joint une petite modif :

Sub Test()
Dim ProductLine As String
Dim Tab1
Dim i, x As Integer
x = 0
Range("a4:n65536").Clear
ProductFile = Application.GetOpenFilename("csv files (*.csv), *.csv")
If ProductFile = False Then Exit Sub
Open (ProductFile) For Input As #1
Do
Line Input #1, ProductLine
Tab1 = Split(ProductLine, ";")
Cells(4 + x, 1).Resize(1, UBound(Tab1) + 1) = Tab1
x = x + 1
Loop While Not EOF(1)
Close #1
End Sub

Je reproduis le pb à ~ 32764 lignes dans les 2 cas.
Ton code est 2 fois plus rapide que le mien...
 
Dernière édition:
Re : [Macro] Importation un fichier CSV - Mémoire insuffisante

Merci pour ta réponse.

Je fais cette macro pour simplifier l'importation des données du fichier csv. Malheureusement, certaines personnes ne sont pas capables de passer par le menu Données. :/

Alors, j'ai le même problème avec ton code. Ce n'est pas sur le nombre de ligne mais sur la taille du texte pour une cellule. Si la valeur est trop grande pour la cellule de la feuille Excel, cela plante.

Connais-tu un code pour esquiver les valeurs trop grandes ?

Une autre question, si j'ai un fichier csv avec des doubles tabulations comme séparateur, comment je peux l'indiquer dans mon code ?
J'ai essayé ceci : Split(ProductLine, " ") mais je ne suis pas convaincu...

Merci de ton aide.
 
Re : [Macro] Importation un fichier CSV - Mémoire insuffisante

Re,

Peux tu etre plus precis sur la taille du texte ?
Donner un exemple ?

Voici un autre code pour faire ce que tu veux (qui pour moi ne plante pas à 32000 lignes) et dans lequel j'ai mis un eemple pour les doubles Tab

Sub Test2()
ThisWorkbook.Sheets(1).Cells.ClearContents
ProductFile = Application.GetOpenFilename("csv files (*.csv), *.csv")
If ProductFile = False Then Exit Sub
Dim fs, f, ts, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(ProductFile)
Set ts = f.OpenAsTextStream(1, -2)
Do While ts.AtEndOfStream <> True
Tab1 = Split(ts.readline, Chr(9) & Chr(9))
For i = 0 To UBound(Tab1)
Range("A4").Offset(x, i) = Tab1(i)
Next i
x = x + 1
Loop
ts.Close
End Sub

On peut afficher jusqu"à 32 767 caracteres dans une cellule.
J'arrive à en ouvrir qui contiennent 32 767 caracteres, avec ton code aussi d'ailleurs ...
 
Dernière édition:
Re : [Macro] Importation un fichier CSV - Mémoire insuffisante

Merci pour ton code ci-dessus.

Pour information, voici un exemple en pièce jointe que j'ai utilisé avec ton 1er code.

Merci pour ton aide, le dernier code que tu m'as fourni correspond parfaitement à mes besoins.

Bonne journée.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
699
Réponses
8
Affichages
645
Réponses
4
Affichages
573
Réponses
3
Affichages
833
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
907
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…