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 :

Rassembler plusieurs fichiers CSV dans une feuille d'un fichier principal


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2017
    Messages : 1
    Par défaut Rassembler plusieurs fichiers CSV dans une feuille d'un fichier principal
    Bonjour à tous,

    Depuis quelques temps je suis en stage dans une boite et une de mes taches consiste à analyser des CDR. du coup chaque jour je dois recupérer environs 165 fichiers au format .csv ensuite les compiler en un seul pour les analyser, Mais voilà ça me prend pas mal de temps et je sais que la solution se trouve dans VBA sauf que je suis nul à ça

    Tous les fichiers sont classé dans un même répertoire. Quelqu'un aurait il une solution miracle please ?

  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
    réponse : Oui il y a !

    va voir dans forum "CONTRIBUER" chez kiki il y a plein d'exemple pour lister des fichiers d'un même répertoire.

    en suite tu fais un for Each pour les prendre un par un

    tu l'ouvres

    tu copies tout ce dont tu as besoin dans un autre classeur

    tu fermes le CSV

    et tu passes au suivant.


    tu essaye de faire cela en VBA (lis les tutos et exemples)

    et quand tu as du code même s'il es bancal et ne marche pas tu auras plein de personnes qui interviendront pour te venir en aide


    http://www.developpez.net/forums/d849215/logiciels/microsoft-office/excel/fichiers-joints-discussions/


    lis bien le paragraphe 3


    @ bientôt

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    le bouton recherche il est valable pour tout le monde


    des exemples et méthodes tu en a la pelle

    un truc que j'avais fait pour une même demande
    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
    Sub compil_csv()
        Dim fichier_final, fichier, x, x2, chemin
        fichier_final = "C:\Users\" & Environ("UserName") & "\Desktop\Fichierfinal.csv"
        If Dir(fichier_final) <> "" Then Kill fichier_final
        chemin = ThisWorkbook.Path
        fichier = Dir(ThisWorkbook.Path & "\*.csv")
        i = 0
        Do
            x = FreeFile
            Open chemin & "\" & fichier For Input As #x
            laChaine = Input(LOF(x), #x)
            Close #x
            x2 = FreeFile
            Open fichier_final For Append As #x2
            Print #x2, laChaine & vbCrLf ' si vous; voulez; pas une ligne vide entre chaque fichier; suprimer le  "& vbcrlf"
            Close #x2
            i = i + 1
            fichier = Dir
        Loop Until fichier = ""
        Workbooks.Open fichier_final, local:=True
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Dans le même style que Patrick :
    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
     
    Sub Concatener()
     
        Dim CheminSource As String
        Dim CheminDest As String
        Dim Chaine As String
        Dim FichierResultat As String
        Dim Fichier As String
     
        CheminSource = "C:\fichiers\"
        CheminDest = "C:\fichiers\Destination\"
     
        Fichier = Dir(CheminSource & "\*.csv")
     
        'nom du fichier final
        FichierResultat = "Résultat.csv"
     
        'ouvre le fichier texte qui va recevoir les valeurs (si il n'existe pas, il sera créé !)
        Open CheminDest & FichierResultat For Append As #1
     
            Do While (Len(Fichier) > 0)
     
                'ouvre les fichiers les uns après les autres et récupère leur contenu en une seule fois...
                Open CheminSource & Fichier For Binary As #2
     
                    Chaine = Space(LOF(2)): Get #2, , Chaine
     
                    'puis les inscrit dans le fichier de destination
                    Print #1, Chaine
     
                Close #2
     
            Loop
     
        Close #1
     
        MsgBox "Terminée !"
     
    End Sub
    Je n'ai pas testé, adaptes !

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bien vu theze le binary ca résout le soucis qu'il y arrive quelque fois sur le nombre de ligne inexact avec input et output j'avais oublié et le pire c'est que je l'ai jamais changé dans mes archives démo
    et l'ouverture imbriqué pas mal non plus j'aime le style
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2016, 20h34
  2. [XL-2010] importer et traiter un fichier csv dans une feuille excel
    Par guilhemaore dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/11/2015, 11h06
  3. [XL-2003] Insertion d'un fichier csv dans une feuille xls
    Par giom182 dans le forum Excel
    Réponses: 10
    Dernier message: 20/07/2009, 18h52
  4. [XL-2003] Importer automatiquement un fichier CSV dans une feuille
    Par Mikayel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/06/2009, 10h35
  5. Liste des fichiers CSV dans une feuille
    Par DubDub dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/02/2009, 08h05

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