none
compilation de fichier excel RRS feed

  • Question

  • Bonjour tout le monde,

    Je souhaite obtenir une macro qui compilerai les données de plusieurs fichier Excel dans un unique fichier dont voici mon code :

    Sub compilation()
    
    Cells.Delete
    Range("A1") = "Nom"
    Range("B1") = "Prenom"
    Range("C1") = "ville"
    
    ChDir "C:\Users\mike\Downloads\identite"
    ClasseurRegional = Dir("C:\Users\mike\Downloads\identite\*.xlsx")
    While Len(ClasseurRegional) > 0
    Workbooks.Open ClasseurRegional
    AvantDerniereLigne = ActiveSheet.UsedRange.Rows.Count - 0
    Range("A2:X" & AvantDerniereLigne).Copy
    Workbooks("Recap.xlsm").Activate
    DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
    Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
    ActiveSheet.Paste
    Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ClasseurRegional
    Workbooks(ClasseurRegional).Close
    ClasseurRegional = Dir
    Wend
    
    Columns("A:A").Replace ".xlsx", ""
    Cells.EntireColumn.AutoFit
    Range("A1").Select
    End Sub
    

    Le code marche parfaitement pour les fichiers présent dans le dossier "C:\Users\mike\Downloads\identite\*.xlsx", mais  j'aimerais définir plusieurs dossiers de récupération mais j'obtiens toujours des erreurs.

    Merci pour votre aide.

    Cdt

    jeudi 19 décembre 2013 23:21

Réponses

  • Bonjour,

    Tu répètes cette boucle autant de fois que tu as de dossiers en changeant le chemin :

    ClasseurRegional = Dir("C:\Users\mike\Downloads\identite\*.xlsx")
    While Len(ClasseurRegional) > 0
    Workbooks.Open ClasseurRegional
    AvantDerniereLigne = ActiveSheet.UsedRange.Rows.Count - 0
    Range("A2:X" & AvantDerniereLigne).Copy
    Workbooks("Recap.xlsm").Activate
    DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
    Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
    ActiveSheet.Paste
    Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ClasseurRegional
    Workbooks(ClasseurRegional).Close
    ClasseurRegional = Dir
    Wend

    • Modifié Aurel Bera vendredi 20 décembre 2013 10:35 modif
    • Marqué comme réponse MikeLee75 vendredi 20 décembre 2013 14:42
    vendredi 20 décembre 2013 09:41

Toutes les réponses

  • Bonjour,

    Tu répètes cette boucle autant de fois que tu as de dossiers en changeant le chemin :

    ClasseurRegional = Dir("C:\Users\mike\Downloads\identite\*.xlsx")
    While Len(ClasseurRegional) > 0
    Workbooks.Open ClasseurRegional
    AvantDerniereLigne = ActiveSheet.UsedRange.Rows.Count - 0
    Range("A2:X" & AvantDerniereLigne).Copy
    Workbooks("Recap.xlsm").Activate
    DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
    Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
    ActiveSheet.Paste
    Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ClasseurRegional
    Workbooks(ClasseurRegional).Close
    ClasseurRegional = Dir
    Wend

    • Modifié Aurel Bera vendredi 20 décembre 2013 10:35 modif
    • Marqué comme réponse MikeLee75 vendredi 20 décembre 2013 14:42
    vendredi 20 décembre 2013 09:41
  • Merci pour votre retour.

    C'est effectivement la démarche que je faisais mais je pensais qu'il y avait un moyen d’alléger la macro.

    Merci encore et bonnes fêtes

    vendredi 20 décembre 2013 14:43