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.
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.