Recupérer données CSV pour addition

Bonjour,

pour commencer je n'ai aucune compétence en programmation de macro sous excel... ce qui ne facilite pas les choses...

Je vous explique la situation: j'ai une machine outils pour fabriquer des pièces qui me crée tous les jours un fichier .csv avec

des informations sur les pièces machiné dans la journée, nbre de pièce total, temps de machinage,...donc 1 fichier par jour.

maintenant mon patron me demande si c'est possible d'additionner les nbres de pièces et les temps de machinage rapidement

en partant des fichiers .csv

le souci c'est que j'en ai plus de 400 alors de les passer 1 à 1 c'est un peu long et pas très productif...

Est-ce que quelqu'un pourrait me mettre sur un piste a suivre pour y arriver?

il me faudrait additionner tous les "quantité totale" de chaque fichier (sachant que suivant le nombre de pièce différente faite dans la journée la cellule n'est par forcément la meme mais toujours dans la colonne C)

il me faudrait aussi additionner tous les "T totale" de chaque fichier et de chaque ligne (sachant que le nbr de "T totale" est variable suivant le nbr de pièce machiné)

Merci d'avance

9920110118-pro.csv (1.04 Ko)
9720110120-pro.csv (1.87 Ko)

Bonsoir,

Regarde si cela te convient. Il te faut adapter le chemin du dossier où se trouvent tes fichiers. Une fois cette modif effectuée, tu appuis sur F5 pour lancer le code. Fais attention que la feuille active du classeur de récup (celui où tu mets ce code) soit vide :

Sub Totaliser()

    Dim TblFichiers() As String
    Dim Ligne As String
    Dim I As Long
    Dim J As Long
    Dim K As Integer
    Dim L As Integer

    'récupère les fichiers, --> adapter le chemin du dossier
    'à la place de "D:\Dossier1\" (ne pas toucher au reste et mettre 1 \ à la fin)
    TblFichiers = RecupFichiers("D:\Dossier1\", "*", ".csv")

    'boucle sur les fichiers
    For K = 1 To UBound(TblFichiers)

        'les ouvre en lecture
        Open TblFichiers(K) For Input As #1

            Do While Not EOF(1)

                'récupère la ligne entière
                Line Input #1, Ligne

                I = I + 1

                'recherche le mot "Quantité totale" en colonne C puisqu'elle ne varie pas
                'si trouvé, donne la valeur de I à J afin de récupérer la valeur située à la
                'ligne suivante
                If Split(Ligne, ";")(2) = "Quantité totale" Then

                    J = I

                End If

                'récupère les valeurs de la ligne des totaux ainsi que le nom du fichier (à virer si pas utile)
                'et les inscris dans la feuille active à partir de A1, B1 et C1
                If I = J + 1 And J > 0 Then

                    L = L + 1
                    Cells(L, 1) = Dir(TblFichiers(K))
                    Cells(L, 2) = Split(Ligne, ";")(1)
                    Cells(L, 3) = Split(Ligne, ";")(2)

                End If

            Loop

        Close #1

    Next K

    'une fois tous les fichiers passés, inscrit les formules deux lignes au dessous des valeurs
    Cells(L + 2, 2) = "Total :"
    Cells(L + 2, 2).Formula = "=SUM(B1:B" & L & ")"
    Cells(L + 2, 3).Formula = "=SUM(C1:C" & L & ")"

End Sub

Function RecupFichiers(Chemin As String, _
                       Racine As String, _
                       Ext As String) As String()

    Dim TableauFichiers() As String
    Dim Fichier As String
    Dim I As Integer

    'boucle dans le dossier jusqu'à la fin des fichiers et rempli le tableau
    Fichier = Dir(Chemin & Racine & Ext)

    Do While (Len(Fichier) > 0)

        I = I + 1
        ReDim Preserve TableauFichiers(1 To I)

        TableauFichiers(I) = Chemin & Fichier
        Fichier = Dir()

    Loop

    RecupFichiers = TableauFichiers()

End Function

Hervé.

Salut Douis, Salut Hervé,

Comme je me suis également penché sur le sujet et que mon approche est peut-être plus simple à mettre en place – il ne faut rien adapter, puisque Douis indique ne pas connaître grand-chose aux macros – je me permets de vous soumettre également ma solution.

Il suffit de placer le fichier ci-joint dans le même dossier que les fichiers .csv à additionner et de cliquer sur le bouton en place.

douis a écrit :

il me faudrait aussi additionner tous les "T totale" de chaque fichier ET DE CHAQUE LIGNE

J’ai donc compris que l’on ne pouvait pas utiliser le total inscrit au fond de la colonne B de chaque fichier .csv, mais qu’il fallait refaire le total de la colonne G de ces mêmes fichiers. Est-ce bien correct ?

Cordialement.

189base.zip (12.15 Ko)

oui c'est bien correct pour le total, il faut additionner la colonne G et pas le T totale qui est en bas à gauche.

je vais essayer tout ça ce matin!

je vous tiens au courant dès que j'ai pu faire quelque chose.

En tout cas merci pour la réactivité


WAW! parfait! excellent le fichier base.xls!

Un grand merci j'en demandais pas tant!

a+ et encore merci

Juste une question : En fonction du plus grand nombre de fichiers que tu traites en une fois, quelle est la durée de traitement ?

Cordialement.

pour 220 fichier qui correspond à 1 an de données, cela prend environ 1min30

Ok, merci pour ta réponse.

Bonne continuation.

Rechercher des sujets similaires à "recuperer donnees csv addition"