Traitement de CSV

Traitement de CSV - VB/VBA/VBS - Programmation

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
Reply

Marsh Posté le 29-09-2011 à 10:20:03   

Reply

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


Message édité par kiki29 le 29-09-2011 à 15:10:42

---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
Reply

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

Reply

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é


Message édité par white-rabbit le 29-09-2011 à 16:30:48

---------------
>> Portfolio: www.MyDeclic.com
Reply

Marsh Posté le 30-09-2011 à 11:02:34    

Ok merci


---------------
>> Portfolio: www.MyDeclic.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed