More

    Comment fusionner feuilles Excel automatiquement

    Advertisement

    Fusionner des dizaines voire des centaines de feuilles Excel en une seule est une tâche fastidieuse si elle est effectuée manuellement. Heureusement, en exploitant la puissance des macros VBA, ce processus complexe peut être automatisé en un seul clic, vous faisant gagner un temps et des efforts considérables.

    Advertisement

    Pour les professionnels qui gèrent fréquemment la consolidation de données provenant de divers services ou de rapports périodiques, cette technique est essentielle. Utiliser une macro VBA pour fusionner des feuilles Excel est non seulement efficace mais minimise également le risque d’erreur humaine courant lors de la copie manuelle des données.

    Avantages de l’utilisation des macros VBA

    Comparée aux méthodes conventionnelles de copier-coller, l’automatisation avec VBA offre plusieurs avantages. Premièrement, le processus d’exécution est très rapide. Deuxièmement, la cohérence des données est garantie car elle est gérée par le script. De plus, vous pouvez personnaliser le code selon des besoins spécifiques, comme fusionner des données sans répéter les en-têtes.

    Advertisement

    Script VBA pour fusionner toutes les feuilles

    Voici un script VBA fiable et testé. Ce code fusionnera les données de toutes les feuilles d’un classeur, à l’exception de la feuille de résultat fusionnée elle-même, dans une nouvelle feuille nommée « RDBMergeSheet.

    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
    
        'Supprimer la feuille "RDBMergeSheet" si elle existe
        Application.DisplayAlerts = False
        On Error Resume Next
        ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
        On Error GoTo 0
        Application.DisplayAlerts = True
    
        'Créer une nouvelle feuille nommée "RDBMergeSheet"
        Set DestSh = ActiveWorkbook.Worksheets.Add
        DestSh.Name = "RDBMergeSheet"
        StartRow = 2
    
        'Parcourir toutes les feuilles et copier les données vers DestSh
        For Each sh In ActiveWorkbook.Worksheets
            If IsError(Application.Match(sh.Name, _
                                         Array(DestSh.Name, "Information"), 0)) Then
                Last = LastRow(DestSh)
                shLast = LastRow(sh)
    
                If shLast > 0 And shLast >= StartRow Then
                    Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
    
                    If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
                        MsgBox "Espace insuffisant dans la feuille de destination"
                        GoTo ExitTheSub
                    End If
    
                    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)
        DestSh.Columns.AutoFit
    
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
    End Sub
    
    'Fonction de support pour trouver la dernière ligne
    Function LastRow(sh As Worksheet)
        On Error Resume Next
        LastRow = sh.Cells.Find(What:="*", _
                                After:=sh.Range("A1"), _
                                Lookat:=xlPart, _
                                LookIn:=xlFormulas, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlPrevious).Row
        On Error GoTo 0
    End Function

    Notez que ce script nécessite la fonction de support LastRow, qui a été incluse pour détecter avec précision la dernière ligne contenant des données.

    Advertisement
    Macro VBA pour fusionner des feuilles Excel dans l'interface Microsoft Excel
    Image : Éditeur VBA dans Excel affichant le code macro pour fusionner des feuilles.

    Comment utiliser ce script

    1. Ouvrez votre classeur Excel.
    2. Appuyez sur ALT + F11 pour ouvrir l’éditeur VBA.
    3. Dans l’Explorateur de projets, faites un clic droit sur votre classeur, sélectionnez Insérer > Module.
    4. Copiez et collez l’intégralité du code ci-dessus dans la fenêtre du module vide.
    5. Fermez l’éditeur VBA et retournez dans Excel.
    6. Exécutez la macro en appuyant sur ALT + F8, sélectionnez CopyDataWithoutHeaders, puis cliquez sur Exécuter.

    De cette manière, toutes les données des différentes feuilles seront fusionnées proprement dans une nouvelle feuille. Par conséquent, vous pouvez vous concentrer sur l’analyse des données plutôt que sur le processus de collecte.

    Articles Récents