IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

importer des csv dans un fichier excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Par défaut importer des csv dans un fichier excel
    Bonjour,

    Voila, je ne connais rien a la programmation, mais j'ai besoin d'Apprendre.
    Voici mon probleme:
    J'ai 50 fichiers csv localise dans 1 repertoire a importer dans un nouveau fichier excel.

    Chaque csv contient une seulle feuille (il me semble que c'est toujours le cas), et sont tous base sur le meme format:
    Le combre de colonne utilise est toujours le meme et elles ont toutes le meme nom. Par contre, le nombre de ligne est totallement different entre chaque csv.

    Ce que je cherche a faire:
    Ouvrir un fichier excel contenant une macro. Lorsque je lance la macro, je veux que la macro aille chercher tous les csv localise dans mon repertoire, et les importent, les uns apres les autres, dans une seulle feuille de mon nouveau classeur. Bien entendu, je veux que l'import du csv ne commence qu'a la deuxieme ligne (A2)... et egalement que l'importation dans le nouveau fichier commence a ligne 2 (A2)

    Donc, si c'est possible, si oui, comment le faire?
    Si quelqu'un a un code similaire, je suis tres preneur, mais si cela ne vous derange pas, j'aimerai comprendre comment fonctionne la macro....

    Merci d'avance

    Nicolas

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub csvImport()
    Dim Wbcsv As Workbook
    Dim Chemin As String, Fichier As String
    Dim LastLig As Long, NewLig As Long
    Dim c As Range
    Dim Tablo
    Const Sep As String = ";"
     
    Application.ScreenUpdating = False                       'Inhibe la mise à jour affichage
    Chemin = ThisWorkbook.Path & "\"                                   'Chemin du dossier où chercher les fichiers csv (Ici ce classeur se trouve dans ce même dossier, sinon on peut êcrire ici le chemin du dossier
    Fichier = Dir(Chemin & "*.csv")                          'Le premier fichier csv trouvé
    Do While Fichier <> ""                                   'on fait une boucle jusqu'à ce qu'on ne trouve plus de fichier csv
       Set Wbcsv = Workbooks.Open(Chemin & Fichier)          'On ouvre le fichier csv qu'on affecte à la variable Wbcsv
       With Wbcsv.Sheets(1)
          LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row     'LastLig est la dernière ligne remplie du fichier csv ouvert
       End With
       With ThisWorkbook.Worksheets("Feuil1")
          For Each c In Wbcsv.Sheets(1).Range("A2:A" & LastLig)   'Pour chaque cellule de A2:Axxx
             NewLig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1   'la première cellule vide de la colonne 1 de Feuil1 de ce classeur
             Tablo = Split(c.Value, Sep)                        'On sépare les données par rapport au séparateur (ici le point virgule)
             .Range(.Cells(NewLig, 1), .Cells(NewLig, UBound(Tablo) + 1)).Value = Tablo   'on copie
          Next c
       End With
       Wbcsv.Close                                           'On ferme le fichier csv
       Fichier = Dir()                                       'on cherche le fichir csv suivant
    Loop                                                     'on reboucle
    End Sub

  3. #3
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Par défaut merci, ca a marche!
    Bonjour,

    Merci d'avoir repondu si vite! La mcro fonctionne, c'est super.
    Je vais esssaye de rajouter une petit functionnalite qui permettrait d'ouvrir une boite de dialogue afin d'identifier le repertoire dans lequel les csv se trouve.
    Je suppose que je dois definir le string "Chemin" en tant que le repertoire que l'utilisateur identifiera a travers la dial.box?

    Merci encore

    Nicolas

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub csvImport()
    Dim Wbcsv As Workbook
    Dim Fichier As String, Chemin As String
    Dim LastLig As Long, NewLig As Long
    Dim c As Range
    Dim Tablo
    Const Sep As String = ";"
     
    Application.ScreenUpdating = False                       'Inhibe la mise à jour affichage
    With Application.FileDialog(msoFileDialogFolderPicker)
       .Show
       If .SelectedItems.Count = 1 Then Chemin = .SelectedItems(1)
    End With
     
    If Chemin <> "" Then
       Chemin = Chemin & "\"
       Fichier = Dir(Chemin & "*.csv")                       'Le premier fichier csv trouvé
       Do While Fichier <> ""                                'on fait une boucle jusqu'à ce qu'on ne trouve plus de fichier csv
          Set Wbcsv = Workbooks.Open(Chemin & Fichier)       'On ouvre le fichier csv qu'on affecte à la variable Wbcsv
          With Wbcsv.Sheets(1)
             LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row  'LastLig est la dernière ligne remplie du fichier csv ouvert
          End With
          With ThisWorkbook.Worksheets("Feuil1")
             For Each c In Wbcsv.Sheets(1).Range("A2:A" & LastLig)   'Pour chaque cellule de A2:Axxx
                NewLig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1   'la première cellule vide de la colonne 1 de Feuil1 de ce classeur
                Tablo = Split(c.Value, Sep)                     'On sépare les données par rapport au séparateur (ici le point virgule)
                .Range(.Cells(NewLig, 1), .Cells(NewLig, UBound(Tablo) + 1)).Value = Tablo   'on copie
             Next c
          End With
          Wbcsv.Close                                        'On ferme le fichier csv
          Fichier = Dir()                                    'on cherche le fichir csv suivant
       Loop                                                  'on reboucle
    End If
    End Sub

Discussions similaires

  1. [XL-2010] Importer des données dans un fichier excel
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/03/2015, 16h54
  2. Importer des données dans un fichier .csv
    Par programation dans le forum Simulink
    Réponses: 1
    Dernier message: 08/07/2011, 08h41
  3. Importer des csv dans un fichier excel
    Par LOLYLO dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/06/2011, 15h46
  4. [VBA-E] Lire des valeurs dans un fichier excel
    Par nicobox dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/05/2006, 15h40
  5. Mettre des donnees dans un fichier Excel
    Par Mouawad dans le forum C++Builder
    Réponses: 6
    Dernier message: 07/10/2004, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo