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 :

Import de donnees .csv d'un dossier a un tableur excel.


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut Import de donnees .csv d'un dossier a un tableur excel.
    Bonjour, J'ai un dossier nome RK contenant un certain nombre de fichiers .csv ayant une seule Worksheet et dont les données sont séparées par des ";".J’ai besoin d’importer tous ces fichiers sur des onglets différents nommés comme leurs fichiers d’origine sur un même document Excel.

    Ci-dessous un code que j’ai trouvé en ligne légèrement modifié selon mes besoins. Quand je fais tourner la macro j’obtiens My_file = "" .comment devrais-je modifier le code. Merci pour votre aide.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Public Sub Load_text_Files()
     
    Const PATH = "C:\Users\Documents\RK"
     
    Dim My_Filenumber As Integer
    Dim My_File As String
    Dim My_Data As String
    Dim My_Array As Variant
    Dim WS As Worksheet
     
    My_File = Dir(PATH & "*.csv")
     
    If My_File = "" Then
        'MsgBox "No Files found matching " & PATH & My_Extension
        Exit Sub
    End If
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
     'remove any worksheet in workbook except current worksheet
    For Each WS In ThisWorkbook.Worksheets
        If WS.Name <> ActiveSheet.Name Then
            WS.Delete
        End If
    Next
     
     'load each file
    While My_File <> ""
        AddSheetIfMissing (My_File)
        Worksheets(My_File).Activate
        My_Filenumber = FreeFile
        With ActiveSheet
            Open PATH & My_File For Input As #My_Filenumber
            While Not EOF(My_Filenumber)
                Line Input #My_Filenumber, My_Data
                My_Array = Split(My_Data, ";") 'split the string at every comma.... store result in any array
                .Range(Cells(.Range("A65536").End(xlUp).Row + 1, 1), Cells(.Range("A65536").End(xlUp).Row + 1, UBound(My_Array))) = My_Array 'output the array into each column
            Wend
            Close My_Filenumber
            My_File = Dir 'get next file
        End With
    Wend
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
     
    End Sub
     
     
    Function AddSheetIfMissing(Name As String) As Worksheet
     
    On Error Resume Next
    Set AddSheetIfMissing = ThisWorkbook.Worksheets(Name)
    If AddSheetIfMissing Is Nothing Then
        Set AddSheetIfMissing = ThisWorkbook.Worksheets.Add
        AddSheetIfMissing.Name = Name
    End If
     
    End Function

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    il manque déjà un \ à la fin de la constante PATH !

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut
    Je ne vois pas ou le placer j'ai essayer plusieurs locations en vain et n'ai obtenu que des messages d'erreur.

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const PATH = "C:\Users\Documents\RK\"

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut
    Le lien a ete copié, jai quand meme ajouté le \ manquant mais My_File="" donc la fonction se termine sans peupler mon document.

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Et bien aucun csv dans ce path

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut
    Votre remarque m'as mis sur la bonne voie. Maintemant je me retrouves face a un autre probleme, tous mes resultats apparaissent sur la meme ligne cela est peut etre due a la maniere dont l'array est decrit . Des conseils pour y remedier?

  8. #8
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Ils devraient être splités par ligne... il faudrait nous envoyer un exemple..

  9. #9
    Membre habitué
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut
    les dossier csv ne sembles pas etre valides comme pieces jointe. en plus d'avoir toutes mes donnees sur une seule ligne mes donnees sont toutes encadrees de ""

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Tu pourrais essayer en utilisant le DataObject (clipboard d'Excel) et en copiant/collant tout le fichier d'un coup. J'ai utilisé cette méthode souvent et ça a toujours bien été...

    Un peu comme ceci (à intégrer à ton début de code)

    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
     
            Open PATH & My_File  For Binary As #My_Filenumber
            strTemp = Space$(LOF(My_Filenumber))
            Get #My_Filenumber, , strTemp
     
            Set MyDataObject = New DataObject
            MyDataObject.SetText strTemp
                MyDataObject.PutInClipboard
                Range("A" & Cells(Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial
                Close #My_Filenumber
     
            MyDataObject.Clear
            Set MyDataObject = Nothing
     
            DoEvents
    Pour pouvoir utiliser le DataObject, tu dois créer une référence à
    Microsoft Forms 2.0 Object Library

  11. #11
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Avant de poster un nouveau sujet, il serait bien d'effectuer une recherche
    car ce sujet a déjà été traité au moins par deux fois récemment !

    Notamment il y a trois jours où une seule & simple ligne permet d'ouvrir et de séparer en colonnes un tel fichier .csv (; et ") :

    Ouverture d'un fichier csv … (voir la ligne n°4)

    Au passage on peut y voir un fichier .csv en pièce jointe …

    Et non les données d'un fichier .csv ne sont pas toutes sur une seule ligne,
    c'est juste l'éditeur utilisé qui ne sait pas bien les afficher !


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________
    Quand on est mort, on ne sait pas qu'on est mort, c'est pour les autres que c'est difficile … Quand on est con, c'est pareil ‼

Discussions similaires

  1. [XL-2010] Macro importer des fichiers txt d'un dossier dans des fichiers excel
    Par ccadic dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/04/2013, 11h21
  2. Importer les données d'un fichier csv dans une base de données
    Par Invité dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 08/06/2010, 14h54
  3. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 16h18
  4. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 12h03
  5. importer des donnees dans interbase
    Par ms91fr dans le forum InterBase
    Réponses: 3
    Dernier message: 25/11/2002, 18h43

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