TOP

Collection de feuilles de travail

Description

Parfois, nous devons combiner des feuilles de différents classeurs Excel pour créer un nouveau rapport ou un fichier de données consolidées. Une telle opération peut être effectuée manuellement, à l'aide des outils MS Excel standard, mais cela peut prendre beaucoup de temps et d'efforts. Voyons comment nous pouvons automatiser ce processus et accélérer le travail avec les rapports.

Par exemple, nous avons de nombreux classeurs Excel et nous souhaitons collecter les feuilles de calcul de tous les classeurs dans un seul fichier. Pour ce faire, ouvrez le classeur dans lequel vous souhaitez collecter toutes les feuilles et ajoutez le code macro suivant.


Code VBA pour la macro

Avec le classeur Excel ouvert, où vous souhaitez collecter toutes les feuilles, ouvrez Visual Basic Editor (Alt+F11), insérez le module VBA (Insert - Module) et copiez-y ce code de macro :

Sub CombineWorkbooks()
    Dim FilesToOpen
    Dim x As Integer
    
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    
    FilesToOpen = Application.GetOpenFilename _
                  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
                   MultiSelect:=True, Title:="Files to Merge")
                   
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Aucun fichier n'a été sélectionné !"
        GoTo ExitHandler
    End If
    
    x = 1
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        x = x + 1
    Wend
    
    ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub
    
    ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
    
End Sub

Après cela, vous pouvez revenir à Excel et exécuter notre macro via le menu Tools - Macro - Macros (Alt+F8). Une boîte de dialogue apparaîtra, dans laquelle vous devrez sélectionner un ou plusieurs fichiers (en maintenant Ctrl) dont nous souhaitons ajouter les feuilles au classeur actuel.

Si vous utilisez une extension de fichier Excel différente (par exemple, *.xlsx, *.xlsm, *.xlsb, etc.), vous devrez alors apporter les modifications appropriées à la neuvième ligne de code de notre macro.

Articles sur le sujet :