Importer d’énormes fichiers de données (Microsoft Excel)
Excel a une limite sur le nombre de lignes que vous pouvez avoir dans une feuille de calcul – jusqu’à 65 535. Il est cependant très possible d’avoir un fichier de données brutes contenant plus que ce nombre de lignes. Si vous devez importer ce fichier dans Excel, cela peut sembler presque impossible sans la mise à niveau vers Excel 2007 ou une version ultérieure. (Ces dernières versions ont dépassé la limite de 65 535 lignes.) Cependant, vous pouvez faire deux ou trois choses.
Une possibilité est de faire des copies du fichier texte brut (celui que vous souhaitez importer) puis de réduire la taille de chaque fichier. Par exemple, si vous avez un total de 110 000 lignes à importer dans Excel et que vous travaillez sous la limite de 65 535 lignes, vous pouvez faire deux copies du fichier texte brut. Supprimez la seconde moitié du premier fichier texte et la première moitié du second. Ainsi, vous pouvez importer le premier fichier (maintenant 55 000 lignes) dans une feuille de calcul et le deuxième fichier (également 55 000 lignes)
dans le second.
Si vous ne souhaitez pas diviser vos fichiers d’entrée, vous pouvez envisager d’importer le fichier dans Access. Contrairement à Excel, Access n’a pratiquement aucune limite sur le nombre de lignes que vous pouvez importer. Vous pouvez alors soit travailler avec le fichier dans Access, soit exporter des parties du fichier à utiliser dans Excel.
Enfin, vous pouvez utiliser une macro pour importer les enregistrements dans le grand fichier source. Il existe de nombreuses façons de le faire, mais l’idée de base derrière toute approche est de récupérer chaque ligne du fichier source et de la placer dans une nouvelle ligne d’une feuille de calcul. La macro doit garder une trace du nombre de lignes qu’elle a placées et basculer vers une nouvelle feuille de calcul, si nécessaire.
Public Sub LoadFile() Dim strLine As String Dim I As Long Dim J As Long Dim iLen As Integer Dim iSh As Integer Dim lL As Long Dim sDelim As String Dim MaxSize As Long sDelim = Chr(9) MaxSize = 65000 I = 0 Open "C:\MyDir\MyFile.txt" For Input As #5 Do While Not EOF(5) iSh = (I / MaxSize) + 1 lL = I Mod MaxSize Line Input #5, strLine If Right(strLine, 1) <> sDelim Then strLine = Trim(strLine) & sDelim End If J = 0 Do While Len(strLine) > 1 iLen = InStr(strLine, sDelim) Worksheets("Sheet" & iSh).Offset(lL, J).Value = _ Trim(Left(strLine, iLen - 1)) strLine = Trim(Right(strLine, Len(strLine) - iLen)) J = J + 1 Loop I = I + 1 Loop Close #5 End Sub
La macro suppose que vous avez déjà suffisamment de feuilles de calcul dans votre classeur pour contenir les données, et qu’elles sont numérotées Sheet1, Sheet2, Sheet3, etc. Deux variables que vous voudrez vérifier dans le programme sont les paramètres de sDelim et MaxSize. Le premier spécifie quel caractère est utilisé comme délimiteur de champ dans les informations en cours de lecture. Le second spécifie le nombre maximum de lignes que vous souhaitez sur chaque feuille de calcul. (Ne définissez pas MaxSize plus grand que ce que votre version d’Excel autorise.)
Enfin, notez que la macro ouvre le fichier texte MyFile.txt. Vous voudrez modifier cette instruction Open afin qu’elle ouvre le vrai fichier source que vous souhaitez importer.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (2533) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.