Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel

Excel Forum d'entraide sur Excel

Réponse
 
Outils de la discussion
Vieux 01/08/2008, 10h17   #1 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2003
Messages: 63
Par défaut [Format CSV] Import Excel

Bonjour,
J'aimerai importer un fichier CSV comportant plus de 65000 lignes.
J'aimerai faire en sorte que seules les premières 65000 premères lignes s'enregistrent dans un premier fichier, et qu'un autre fichier se charge des 65000 autres lignes suivantes. Cela est-il gérable via Excel ou faut-il développer une macro ?

Merci d'avance pour toute réponse.
sempire est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/08/2008, 21h52   #2 (permalink)
Responsable Excel
 
Avatar de SilkyRoad
 
Date d'inscription: août 2005
Messages: 3 157
Par défaut

bonsoir


Tu peux tester cette procédure qui utilise la bibliothèque ADO.
Il est possible de paramétrer le nombre de lignes importées par feuille



Code :
Sub Test()
    Extraction "C:\dossier\nomfichier.csv", 65536, ";"
End Sub
 
 
Sub Extraction(Fichier As String, _
     NbLignesParFeuille As Long, _
     Separateur As Variant)
    
    Dim Wb As Workbook
    Dim Counter As Double
    Dim Tableau() As String
    Dim i As Integer
    Dim ContenuLigne As String
    
    Application.ScreenUpdating = False
    
    Counter = 1
    Set Wb = Workbooks.Add(1)
    
    'Ouverture du fichier txt
    Open Fichier For Input As #1
        Do While Not EOF(1)
            If Counter > NbLignesParFeuille Then
                Wb.Worksheets.Add
                Counter = 1
            End If
            
            Line Input #1, ContenuLigne
            'découpe la chaine en fonction des virgules
            'le résultat de la fonction Split est stocké dans un tableau
            Tableau = Split(ContenuLigne, Separateur)
    
            'boucle sur le tableau pour extraire les données
            For i = 0 To UBound(Tableau)
                ActiveSheet.Cells(Counter, i + 1) = Tableau(i)
            Next i
            
            Counter = Counter + 1
        Loop
    Close #1
 
    Application.ScreenUpdating = True
    MsgBox "Opération terminée"
End Sub


bon week end
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBA

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide


Fuseau horaire GMT +1. Il est actuellement 04h25.


Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter
Copyright 2000-2009 www.developpez.com - Legal informations