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.

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

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.

Conseils et considérations importants

Avant d’exécuter la macro, sauvegardez toujours une copie de votre classeur. Une structure de données cohérente dans chaque feuille garantira une fusion parfaite. En revanche, si la structure diffère, vous devrez peut-être modifier le code.

Ce script VBA pour fusionner des feuilles Excel est une base puissante. Vous pouvez le développer davantage, par exemple en ajoutant des filtres ou en ne fusionnant que des feuilles spécifiques. Pour en apprendre davantage sur le VBA, consultez des sources fiables comme le Site Web de Ron de Bruin.

Articles Récents