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 :

Concat�nation de fichiers csv pour op�rations


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2018
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 31
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Consultant MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par d�faut Concat�nation de fichiers csv pour op�rations
    Bonjour � tous !
    Je dois faire un petit outils au boulot qui va manipuler pas mal de donn�es. Je pr�f�re utiliser R habituellement mais mes collaborateurs pr�f�rent que j'utilise vba car ils ont peur de se trouver dans la panade quand je partirais, ce que je peux comprendre

    Le probl�me auquel je m'oppose est le suivant:
    Pour l'outils J'aurais un certain nombre de fichiers csv (5 � 30), dans un m�me dossier et tous organis� de la m�me fa�on,
    - Colonne "Date de la mesure"
    - Colonne "Heure de la mesure"
    - Colonne "Valeur"
    Il y a d'autre truc mais je n'en ai pas besoin

    Ce que j'aimerais c'est r�cup�rer les trois colonnes du premier fichier pour le mettre dans un onglet "TOP 10" de mon outil, mettre en colonne 4 la colonne "Valeur" du fichier 2, en colonne 5 la colonne "Valeur" du fichier 3, et etc...

    J'ai essay� des choses avec une fonction que j'ai trouv�e sur le net
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Function SelectionRep() As String
    Const ssfTous = &H1
    Dim objShell As Object, objFolder As Object, oFolderItem As Object
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", ssfTous)
        If objFolder Is Nothing Then Exit Function
        Set oFolderItem = objFolder.Items.Item
        SelectionRep = oFolderItem.Path
        Set objShell = Nothing
        Set objFolder = Nothing
        Set oFolderItem = Nothing
    End Function
    Je balai ensuite l'ensemble du dossier pour extraire les donn�es de mes fichiers

    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
     
    Option Explicit
    Dim Lig As Long
    Dim Chemin As String
     
    Sub ExtractionCSV()
    Dim Fichier
        Lig = 2
        Chemin = SelectionRep() & "\"
        Fichier = Dir(Chemin)
        Do While Fichier <> ""
            Lig = Lig + 1
            CopierData Fichier
            Fichier = Dir
        Loop
        Sheets(2).Cells.ClearContents
        Sheets(1).Select
    End Sub
    J'ai ensuite essayer de prendre un bout de code que je n'ai pas fait et que je n'arrive pas � adapter � mon cas.

    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
     
    Sub CopierData(Fichier)
        With Sheets(1)
            .Cells.ClearContents
            With .QueryTables.Add(Connection:="TEXT;" & Chemin & Fichier, Destination _
                :=.Range("A1"))
                .Name = Fichier
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = True
                .RefreshOnFileOpen = False
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .TextFilePromptOnRefresh = False
                .TextFilePlatform = 1252
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileConsecutiveDelimiter = False
                .TextFileTabDelimiter = True
                .TextFileSemicolonDelimiter = False
                .TextFileCommaDelimiter = False
                .TextFileSpaceDelimiter = False
                .TextFileOtherDelimiter = """"
                .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
                .TextFileTrailingMinusNumbers = True
                .Refresh BackgroundQuery:=False
            End With
            .Range("L1:L6").Copy
            Sheets("TOP10").Cells(Lig, 2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        End With
     
    End Sub
    Ca n'extrait que le premier fichier csv et en plus j'ai l'ensemble du fichier sur une seule et m�me colonne !

    Tout �l�ment de r�ponse � mon probl�me serait d'une aide pr�cieuse

    En esp�rant avoir �t� clair et en attendant de vous lire,

    Je vous souhaites une agr�able fin de semaine

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    D�veloppeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par d�faut
    Bonjour,

    Je dis pas que ce que tu as fais n'est pas bien seulment vu que c'est pour des utilisateur finaux autre que toi je te conseille d'utiliser les FilesDialog pour une meilleur IHM voici 2 exemples

    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
    Sub Trav_FileDialog()
     
        Dim Wrbk As Workbook
        Dim Chem_Select As String
        Dim Wsh As Worksheet
     
    'ouverture d'un fichier par boite FileDialog
    '**********************************************************
        'Declaration d'une variable comme objet FileDialog
        Dim fd As FileDialog
     
        'Creation d'un objet FileDialog comme un File Open dialog box.
        Set fd = Application.FileDialog(msoFileDialogOpen)
     
        'Déclaration d'une variable contenant le "path" de style variant
        Dim vrtSelectedItem As Variant 'obligatoirement de type variant
     
        With fd
            .AllowMultiSelect = True
            .InitialFileName = "D:\Travaux_en_cours"
     
            If .Show = -1 Then
                 .Execute
            Else
                Exit Sub
            End If
        End With
     
    '----------------------------------------------
    'Sélection d'un dossier par boite FileDialog
    '**********************************************************
        'Declaration d'une variable comme objet FileDialog
        'Dim fd As FileDialog (déja déclarée)
     
        'Creation d'un objet FileDialog comme un selectionneur dossier dialog box.
        Set fd = Application.FileDialog(msoFileDialogFolderPicker)
     
        'Déclaration d'une variable contenant le "path" de style variant
        'Dim vrtSelectedItem As Variant 'obligatoirement de type variant (déja déclarée)
     
        With fd
            .InitialFileName = "D:\Travaux Cyrille"
     
            If .Show = -1 Then
                'Step through each string in the FileDialogSelectedItems collection.
     
                vrtSelectedItem = Application.FileDialog(msoFileDialogFolderPicker).InitialFileName
     
                    'vrtSelectedItem est un String contenant (dans ce cas) le nom du dossier selectionné.
                    'affichage du Dossier selectionné dans une boite message
                    MsgBox "Vous avez sélectionné : " & vrtSelectedItem
                    Chem_Select = vrtSelectedItem & "\"
     
            Else
                Exit Sub
            End If
        End With
    End Sub
    j'ais besoin de plus d'info

    tout d'abord comment s'appelle tes fichiers.csv et comment sais-tu dans l'ordre o� ils doivent �tre pris

  3. #3
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2018
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 31
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Consultant MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par d�faut
    Bonjour Igloobel,
    Merci pour ta r�ponse et merci beaucoup pour ton conseil d'am�lioration de l'IHM, c'est tr�s clair.

    Enfaite voici un nom de fichier csv que j'ai "Enedis_M021_CDC_A046XCJR_30002520059703" avec le num�ro de fin correspondant au site/client.

    J'aimerais que la macro aille chercher le contenu de ce fichier (Les 3 premi�res colonnes : Date, Heure, Puissance) puis la 3�me colonne (Puissance) de tous les autres fichiers s�lectionn�s.
    L'ordre dans lequel les fichiers sont pris ne sont pas important tant que le nom du fichier (dans le quel est le nom du client) se retrouve en haut de la colonne "Puissance".

    Cela correspond � la premi�re �tape celle de la centralisation des informations.
    L'objectif final est de pouvoir faire des op�rations avec l'ensemble des colonnes puissances (Somme, Ratios,...), et de tracer des courbes.

    Quels autres informations aurais-tu besoin ?

    Merci d'avance
    Bonne journ�e

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    D�veloppeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par d�faut
    tu as dis
    Pour l'outils J'aurais un certain nombre de fichiers csv (5 � 30), dans un m�me dossier et tous organis� de la m�me fa�on,
    Ok dans le m�me dossier

    mais tu n'as pas r�pondu totalement � ma question :

    tout d'abord comment s'appelle tes fichiers.csv ...
    ok tu m'as donn� un exemple



    ... et comment sais-tu dans l'ordre o� ils doivent �tre pris
    Parcontre l� j'ai rien

  5. #5
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2018
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 31
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Consultant MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 12
    Par d�faut
    Je pensais avoir r�pondu en disant �a :

    L'ordre dans lequel les fichiers sont pris ne sont pas important tant que le nom du fichier (dans le quel est le nom du client) se retrouve en haut de la colonne "Puissance".
    Si il faut absolument un ordre on peut mettre par ordre alphab�tique.

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    D�veloppeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : D�veloppeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par d�faut
    D�sol� j'avais pas vu ... il va falloir que je change de lunette

    ton probl�me viens de ton : Sub CopierData(Fichier)




    Pourquoi tu passe par un querytables alors que tu as a ta dispositions les valeurs des cellules de ton CSV ?

    moi j'ouvrirai le CSV
    Je copierai les donn�es n�cessaire avec l'objet Cells

    synthaxe : Cells(N�ligne, N�colonne)

    et avec une variable long (comme par exemple Num_Col) je passerai d'une colonne � la suivante en incr�mentant ma variable

    c'est � mon avis plus simple surtout vu que tu copies que 3 valeurs

    tu essayes de le faire et puis tu nous montres ton code et on verra ensemble comment on peut le rendre parfait (stable, optimis�, rapide ...) enfin s'il l'est pas d�j�

Discussions similaires

  1. R�ponses: 3
    Dernier message: 12/08/2009, 10h11
  2. Concat�nation de fichiers csv avec tri
    Par lfournial dans le forum G�n�ral Java
    R�ponses: 8
    Dernier message: 25/04/2008, 11h23
  3. Cr�ation d'un fichier CSV pour Excel
    Par soso78 dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 03/04/2008, 15h25
  4. Concat�nation de fichier csv avec ent�te
    Par MottetCCSF dans le forum Langage
    R�ponses: 1
    Dernier message: 19/12/2007, 20h46
  5. R�ponses: 3
    Dernier message: 19/05/2007, 17h19

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