More

    Comment fusionner toutes les feuilles Excel en une seule feuille ?

    Avez-vous déjà fusionné toutes les feuilles dans Microsoft Excel ?

    Vous pouvez fusionner des feuilles en effectuant un « copier-coller ». Cette méthode est assez simple si vous ne faites que fusionner plusieurs feuilles en une seule.

    Si vous devez fusionner des dizaines, voire des centaines de feuilles en une seule, cette méthode sera assez fatigante.

    Au lieu de cela, vous pouvez utiliser les macros VBA. En utilisant les macros VBA, vous pouvez facilement fusionner toutes les feuilles d’Excel, même s’il y en a beaucoup.

    Le texte suivant est un script de macro VBA que vous pouvez utiliser.

    Sub CopyDataWithoutHeaders()
        Dim sh As Worksheet
        Dim DestSh As Worksheet
        Dim Last As Long
        Dim shLast As Long
        Dim CopyRng As Range
        Dim StartRow As Long
    
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
    
        'Delete the sheet "RDBMergeSheet" if it exist
        Application.DisplayAlerts = False
        On Error Resume Next
        ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
        On Error GoTo 0
        Application.DisplayAlerts = True
    
        'Add a worksheet with the name "RDBMergeSheet"
        Set DestSh = ActiveWorkbook.Worksheets.Add
        DestSh.Name = "RDBMergeSheet"
    
        'Fill in the start row
        StartRow = 2
    
        'loop through all worksheets and copy the data to the DestSh
        For Each sh In ActiveWorkbook.Worksheets
    
            'Loop through all worksheets except the RDBMerge worksheet and the
            'Information worksheet, you can ad more sheets to the array if you want.
            If IsError(Application.Match(sh.Name, _
                                         Array(DestSh.Name, "Information"), 0)) Then
    
                'Find the last row with data on the DestSh and sh
                Last = LastRow(DestSh)
                shLast = LastRow(sh)
    
                'If sh is not empty and if the last row >= StartRow copy the CopyRng
                If shLast > 0 And shLast >= StartRow Then
    
                    'Set the range that you want to copy
                    Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
    
                    'Test if there enough rows in the DestSh to copy all the data
                    If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
                        MsgBox "There are not enough rows in the Destsh"
                        GoTo ExitTheSub
                    End If
    
                    'This example copies values/formats, if you only want to copy the
                    'values or want to copy everything look below example 1 on this page
                    CopyRng.Copy
                    With DestSh.Cells(Last + 1, "A")
                        .PasteSpecial xlPasteValues
                        .PasteSpecial xlPasteFormats
                        Application.CutCopyMode = False
                    End With
    
                End If
    
            End If
        Next
    
    ExitTheSub:
    
        Application.GoTo DestSh.Cells(1)
    
        'AutoFit the column width in the DestSh sheet
        DestSh.Columns.AutoFit
    
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
    End Sub

    Source: rondebruin.nl

    Dernières articles