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 :

Une moulinette ?


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut Une moulinette ?
    Bonjour,

    J'ai une question : tous les mois je reçois une 20aine de fichier journalier zippé que j'ouvre un par un et compile à la main pour n'en faire qu'un !
    Ils ont tous le même format, le même nombre de colonne et le même header.

    N'est il pas possible de créer une moulinette qui prends tous les zip dans un folder et les rassemble ?
    Voici un exemple de fichier en PJ.

    Merci !!!
    Fichiers attachés Fichiers attachés

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 83 976
    Points
    83 976
    Billets dans le blog
    15
    Par défaut


    Cet outil à télécharger (proposé par kiki29) pourrait correspondre à votre besoin :

    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut Une moulinette
    Citation Envoyé par tofoo Voir le message
    Bonjour,

    J'ai une question : tous les mois je reçois une 20aine de fichier journalier zippé que j'ouvre un par un et compile à la main pour n'en faire qu'un !
    Ils ont tous le même format, le même nombre de colonne et le même header.

    N'est il pas possible de créer une moulinette qui prends tous les zip dans un folder et les rassemble ?
    Voici un exemple de fichier en PJ.

    Merci !!!
    Une piste: Tu peux cliquer sur "enregistre macro", faire toutes les actions manuellement pour importer un fichier et autres actions de ton choix, cliquer sur "arrêt enregistrement" et ouvre ta macro pour l'éditer et y ajouter une boucle sur tous tes fichiers zip

  4. #4
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut Moulintte
    Je te mets, en annexe, un fichier avec 2 macros, sans prétendre répondre à 100% à ta question.
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Hello Zekraoui_Jakani

    C'est l'idée oui.
    Tu as fais 2 fonctions : une import et une transformation mais je pense que je n'ai besoin que de l'import.

    Dans ta fonction import :

    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
    Sub ImporterCSV()
     
    Dim chemin: Dim fichier As String
     
    chemin = ActiveWorkbook.Path & "\STOCK"
    fichier = "20160502_sample.csv"
     
    'Tofoo : oui il faut faire une boucle mais sans les nommer. J'aimerai que la boucle scanne tous les fichiers present dans le dossier stock par exemple
    For y = 1 To 3
    y = Choose(y, "fichier1.csv", "fichier2.csv", "fichier3.csv")
    'lancer l'import ici, puis lancer "TransformerDonnees"  
    'Tofoo : Pourquoi ?
    Next y
     
    'Tofoo : a quoi sers cette partie ? Prends tu en compte le fait qu il ai tous un header ?
     
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;" & chemin & fichier, Destination:=Range("$A$1"))
            .Name = fichier
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        Range("A2").Select
     
    End Sub
    Pour recapituler la macro scannerai tous les fichiers present dans le dossier "STOCK", ouvrirai le zip, récupere tout sauf le header et les colle un a un à la suite.
    Je ne sais pas si c'est faisable avec des fichiers zippés ??

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir ici via 7Zip

  7. #7
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut Moulinette
    Tu peux ignorer la fonction de "transformation" si jugé inutile.
    Attention, il faut remplacer ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = ActiveWorkbook.Path & "\STOCK"
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = ActiveWorkbook.Path & "\STOCK\"
    Pour que la boucle scanne tous les fichiers present dans le dossier stock, il faut utiliser une boite de dialogue avec ce genre 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
    16
    17
    18
    19
    20
    21
    22
    23
    Sub filePicker()
     
     Dim fdialog As Office.FileDialog
     Dim fs As Variant
     
     Set fdialog = Application.FileDialog(msoFileDialogFilePicker)
     
     With fdialog
          .Filters.Add "All zip Files", "*.zip", 1
     
         .AllowMultiSelect = False
         If .Show Then
            fs = .SelectedItems(1)
            If fs <> "" Then
                MsgBox "Fichier choisi : " & fs, vbOKOnly, "Sélection d'un fichier zip"
                ImporterCSV(fichier)
            End If
         End If
     End With
     
     Set fdialog = Nothing
     
    End Sub
    Il te faudra transformer ImporterCSV() en fonction càd function ImporterCSV(fichier); ainsi seul l'import est effectué (sans la transformation)
    La partie du code dont tu ignores l'utilité sert à écrire dans XL le contenu du fichier CSV
    L'import concerne des fichiers CSV et non des fichiers zipés. Pour le traitement des fichiers zipés, suivre le conseil de Kiki29.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Avril 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Hello

    @Kiki : j'ai essayé l'outil de fusion de ton premier message mais il n'y a pas l'option csv.
    J'ai essayé de changer le code et de changer le format xlsb par csv mais ca plante.

    @Zekraoui_Jakani
    J'ai repris les 2 bouts de code pour les assembler, cela donne ça :

    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
    Sub filePicker()
    Dim fdialog As Office.FileDialog
    Dim fs As Variant
    Set fdialog = Application.FileDialog(msoFileDialogFilePicker)
    With fdialog
     
          .Filters.Add "All zip Files", "*.zip", 1
         .AllowMultiSelect = False
         If .Show Then
            fs = .SelectedItems(1)
            If fs <> "" Then
                MsgBox "Fichier choisi : " & fs, vbOKOnly, "Sélection d'un fichier zip"
                ImporterCSV ()
            End If
         End If
    End With
    Set fdialog = Nothing
    End Sub
     
    Sub ImporterCSV()
     
    Dim chemin: Dim fichier As String
     
    chemin = ActiveWorkbook.Path & "\APAC\"
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;" & chemin & fichier, Destination:=Range("$A$1"))
            .Name = fichier
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        Range("A2").Select
     
    End Sub
    Bon j'ai du me planter qq part....


    J'ai abandonné l'idéé de faire dezip + compilation. Je vais dézipper manuellement. Je cherche une fonction de compilation des fichiers....

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/11/2007, 10h44
  2. Moulinette pour export csv d'une base de données
    Par freestyler dans le forum C#
    Réponses: 6
    Dernier message: 16/02/2007, 11h57
  3. Insertion d'un fichier texte dans une moulinette PL/SQL
    Par Douanier007 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 24/01/2005, 16h08
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

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