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 standard MS Excel, 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 créer collection de feuilles de travail de tous les livres 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 le Visual Basic Editor (Alt+F11), insérer le module VBA ( Insert - Module ) et copiez-y ce code de macro :

Sub CombineWorkbooks()
    'moonexcel.com.ua
    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 du code de notre macro.

Articles sur le sujet :