Traitement de CSV - VB/VBA/VBS - Programmation
Marsh Posté le 29-09-2011 à 12:01:51
Salut, si tu as 2007 et + il y a 2^20 lignes ( 1 048 576 ) minimum de disponibles, sinon tu n'as pas le choix autre que de scinder ton traitement en 65536 lignes / Feuille si l'extraction de données atteint cette limite
Par contre comme il s'agit d'un fichier texte tu peux faire le traitement sans te soucier dans un 1er temps du nombre de lignes que génèrera le traitement
Marsh Posté le 29-09-2011 à 15:13:43
Bonjour,
Je bosse moi aussi sur un VBA devant retravailler des données externes.
J'ai pu réaliser le code du traitement commençant dès que le fichier est importé dans la feuille excel à l'emplacement A1.
Par contre, je n'arrive pas à créer la partie amont étant :
- ouvrir une boite de dialogue où l'utilisateur va chercher le fichier csv à importer
- importer le contenu du csv à partir de la cellule A1
La partie d'après est parfaitement gérée par mon code:
- convertir le contenu
- ajouter des informations
- sélection tout
- placer en presse papier
Quelqu'un aurait il une piste pour cette première partie ?
Merci
Marsh Posté le 29-09-2011 à 16:20:35
Bonjour Kiki,
Merci pour ton retour si rapide.
J'ai essayé d'ajouter ton code (version pour 1 seul fichier) en complément du miens, mais ça ne fonctionne pas.
En fait, la boite s'ouvre bien, je choisi un fichier, mais son contenu n'est pas copier en A1 du coup la suite de mon code ne prend pas le relais.
Pour que tu comprennes un peu mieux voici mon code complété du tiens :
Option Explicit
Sub SelFichier()
Dim Fichier As Variant
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Fichier TXT (*.txt), *.txt" )
If Fichier <> False Then Convert (Fichier)
End Sub
Sub Convert(Fichier)
ActiveCell.SpecialCells(xlLastCell).Select ' Cette partie de la macro était issue d'une macro enregistrée par excel. Elle sélectionne la zone, et la convertie dans excel
Selection.ClearContents
Rows("1:1" ).Select
Columns("A:A" ).Select
Selection.TextToColumns Destination:=Range("A1" ), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="|", FieldInfo:=Array(Array(1, 2), Array(2, 2), _
Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2), _
Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15, 2), _
Array(16, 2), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2), Array(22, 2)), _
TrailingMinusNumbers:=True
End Sub
En bleu uniquement ton code rajouté
Marsh Posté le 29-09-2011 à 10:20:03
Salut a tous.
Je dois faire une macro VBA pour extraire des données d'un fichier CSV, jusqu,a la pas de problemes, sauf que mon CSV fait 250,000 lignes (oui oui oui!)
Une idée pour ne pas avoir a mettre mon CSV dans plein de sheets excel?
---------------
Feed: http://forum.hardware.fr/hfr/Achat [...] 6855_1.htm