Accéder au contenu principal

Astuce Excel : Diviser des données en plusieurs feuilles de calcul / classeurs selon la valeur d'une colonne

Author: Xiaoyang Last Modified: 2025-05-27

Lors de la gestion de grands ensembles de données dans Excel, il peut être très avantageux de diviser les données en plusieurs feuilles de calcul en fonction de valeurs spécifiques de colonnes. Cette méthode améliore non seulement l'organisation des données, mais elle augmente également leur lisibilité et facilite l'analyse des données.

Supposons que vous ayez un grand historique de ventes contenant plusieurs entrées telles que le nom du produit, la quantité vendue au premier trimestre. L'objectif est de diviser ces données en feuilles de calcul distinctes pour chaque nom de produit afin que les performances de vente individuelles puissent être analysées séparément.

Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne

Diviser des données en plusieurs classeurs en fonction de la valeur d'une colonne avec du code VBA

Split data into multiple worksheets based on column value


Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne

Normalement, vous pouvez d'abord trier la liste de données, puis copier et coller les données une par une dans d'autres nouvelles feuilles de calcul. Mais cela nécessitera beaucoup de patience pour copier et coller à répétition. Dans cette section, nous présenterons deux méthodes simples pour accomplir efficacement cette tâche dans Excel, vous faisant gagner du temps et réduisant les risques d'erreurs.

Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne avec du code VBA

1. Maintenez les touches ALT + F11 enfoncées pour ouvrir la fenêtre Microsoft Visual Basic for Applications.

2. Cliquez sur Insertion > Module, puis collez le code suivant dans la fenêtre Module.

Sub Splitdatabycol()
'updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
Dim xWS As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. Ensuite, appuyez sur F5 pour exécuter le code, et une boîte de dialogue apparaît pour vous rappeler de sélectionner la ligne d'en-tête, puis cliquez sur OK. Voir capture d'écran :
split data into worksheets with vba code to select header row

4. Dans la deuxième boîte de dialogue, veuillez sélectionner les données de la colonne que vous souhaitez diviser, puis cliquez sur OK. Voir capture d'écran :
split data into worksheets with vba code to select data range

5. Toutes les données de la feuille de calcul active sont divisées en plusieurs feuilles de calcul en fonction des valeurs de la colonne. Les feuilles de calcul résultantes sont nommées selon les valeurs des cellules divisées et placées à la fin du classeur. Voir capture d'écran :
split data into worksheets with vba code to get the result

 

Diviser des données en plusieurs feuilles de calcul en fonction de la valeur d'une colonne avec Kutools pour Excel

Kutools pour Excel intègre une fonctionnalité intelligente – Diviser les données directement dans votre environnement Excel. Diviser des données en plusieurs feuilles de calcul n'est plus un défi. Notre outil intuitif divise automatiquement votre ensemble de données en fonction de la valeur de colonne choisie ou du nombre de lignes, garantissant que chaque information se trouve exactement là où vous en avez besoin. Dites adieu à la tâche fastidieuse d'organiser manuellement vos feuilles de calcul et adoptez une méthode plus rapide et sans erreurs pour gérer vos données.

Remarque : Pour appliquer cette fonctionnalité Diviser les données, vous devez d'abord télécharger Kutools pour Excel, puis appliquer rapidement et facilement la fonctionnalité.

Après avoir installé Kutools pour Excel, sélectionnez la plage de données, puis cliquez sur Kutools Plus > Diviser les données pour ouvrir la boîte de dialogue Diviser les données en plusieurs feuilles de calcul.

  1. Sélectionnez l'option Colonne spécifique dans la section Diviser selon, et choisissez la valeur de colonne sur laquelle vous souhaitez diviser les données depuis la liste déroulante.
  2. Si vos données contiennent des en-têtes et que vous souhaitez les insérer dans chaque nouvelle feuille de calcul divisée, cochez l'option Mes données contiennent des en-têtes. (Vous pouvez spécifier le nombre de lignes d'en-tête en fonction de vos données. Par exemple, si vos données contiennent deux en-têtes, tapez 2.)
  3. Vous pouvez ensuite spécifier les noms des feuilles de calcul divisées, sous la section Nom des nouvelles feuilles de calcul, spécifiez la règle de nommage des feuilles de calcul depuis la liste déroulante Règles. Vous pouvez également ajouter un Préfixe ou un Suffixe aux noms des feuilles.
  4. Cliquez sur le bouton OK . Voir capture d'écran :
    split data into worksheets with kutools to set the operations

Maintenant, les données de la feuille de calcul sont divisées en plusieurs feuilles de calcul dans un nouveau classeur.
split data into worksheets with kutools to get the result


Diviser des données en plusieurs classeurs en fonction de la valeur d'une colonne avec du code VBA

Parfois, plutôt que de diviser les données en plusieurs feuilles de calcul, il peut être plus bénéfique de diviser les données en classeurs distincts basés sur une colonne clé. Voici un guide étape par étape sur la façon d'utiliser du code VBA pour automatiser le processus de division des données en plusieurs classeurs basés sur une valeur spécifique de colonne.

1. Maintenez les touches ALT + F11 enfoncées pour ouvrir la fenêtre Microsoft Visual Basic for Applications.

2. Cliquez sur Insertion > Module, puis collez le code suivant dans la fenêtre Module.

Sub SplitDataByColToWorkbooks()
    ' Updateby Extendoffice
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    Dim xTRg As Range
    Dim xVRg As Range
    Dim xWS As Workbook
    Dim savePath As String
    ' Set the directory to save new workbooks
    savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
    Application.DisplayAlerts = False
    Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", Type:=8)
    If TypeName(xTRg) = "Nothing" Then Exit Sub
    Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", Type:=8)
    If TypeName(xVRg) = "Nothing" Then Exit Sub
    vcol = xVRg.Column
    Set ws = xTRg.Worksheet
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = xTRg.Address(False, False)
    titlerow = xTRg.Row
    ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
    myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
    ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
    For i = 2 To UBound(myarr)
        Set xWS = Workbooks.Add
        ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
        ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
        xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
        xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"

        xWS.Close SaveChanges:=False
    Next i
    ws.AutoFilterMode = False
    Application.DisplayAlerts = True
    ws.Activate
End Sub
Remarque : Dans le code ci-dessus, vous devez modifier le chemin du fichier vers le vôtre où seront sauvegardés les classeurs divisés dans ce script : savePath = "C:\Users\AddinsVM001\Desktop\multiple files\".

3. Ensuite, appuyez sur F5 pour exécuter le code, et une boîte de dialogue apparaît pour vous rappeler de sélectionner la ligne d'en-tête, puis cliquez sur OK. Voir capture d'écran :
split data into workbooks with vba code to select header row

4. Dans la deuxième boîte de dialogue, veuillez sélectionner les données de la colonne que vous souhaitez diviser, puis cliquez sur OK. Voir capture d'écran :
split data into workbooks with vba code to select data range

5. Après la division, toutes les données de la feuille de calcul active sont divisées en plusieurs classeurs en fonction des valeurs de la colonne. Tous les classeurs divisés sont sauvegardés dans le dossier que vous avez spécifié. Voir capture d'écran :
split data into workbooks with vba code to get the result

Articles connexes :

  • Diviser des données en plusieurs feuilles de calcul par nombre de lignes
  • Diviser efficacement une grande plage de données en plusieurs feuilles de calcul Excel en fonction d'un nombre spécifique de lignes peut rationaliser la gestion des données. Par exemple, diviser un jeu de données toutes les 5 lignes en plusieurs feuilles peut le rendre plus gérable et organisé. Ce guide propose deux méthodes pratiques pour accomplir cette tâche rapidement et facilement.
  • Fusionner deux tables ou plus en une seule basée sur des colonnes clés
  • Supposons que vous ayez trois tables dans un classeur, et maintenant vous voulez fusionner ces tables en une seule table basée sur les colonnes clés correspondantes pour obtenir le résultat comme indiqué dans la capture d'écran ci-dessous. Cela pourrait être une tâche difficile pour la plupart d'entre nous, mais ne vous inquiétez pas, cet article introduira quelques méthodes pour résoudre ce problème.
  • Diviser des chaînes de texte par un délimiteur en plusieurs lignes
  • Normalement, vous pouvez utiliser la fonction Texte en colonnes pour diviser le contenu des cellules en plusieurs colonnes en utilisant un délimiteur spécifique, tel qu'une virgule, un point, un point-virgule, une barre oblique, etc. Mais parfois, vous devrez peut-être diviser le contenu des cellules délimitées en plusieurs lignes et répéter les données des autres colonnes comme indiqué dans la capture d'écran ci-dessous. Avez-vous des bonnes solutions pour traiter cette tâche dans Excel ? Ce tutoriel présentera certaines méthodes efficaces pour accomplir cette tâche dans Excel.
  • Diviser le contenu des cellules multilignes en lignes/colonnes séparées
  • Supposons que vous ayez du contenu de cellule multiligne qui est séparé par Alt + Entrée, et maintenant vous devez diviser le contenu multiligne en lignes ou colonnes séparées, que pouvez-vous faire ? Dans cet article, vous apprendrez comment diviser rapidement le contenu des cellules multilignes en lignes ou colonnes séparées.

Meilleurs outils de productivité pour Office

🤖 Kutools AI Aide : Révolutionner l'analyse des données basée sur : Exécution intelligente   |  Générer du code  |  Créer des formules personnalisées  |  Analyser les données et générer des graphiques  |  Invoquer les Fonctions améliorées
Fonctionnalités populaires : Trouver, mise en évidence ou marquer les doublons   |  Supprimer les lignes vides   |  Consolider les colonnes ou les cellules sans perdre de données   |   Arrondir sans formule ...
Super RECHERCHEV : RECHERCHEV avec critères multiples    RECHERCHEV avec valeurs multiples  |   Recherche multi-feuilles   |   Correspondance floue ....
Liste déroulante avancée : Créer rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante multi-sélection ....
Gestionnaire de colonnes : Ajouter un nombre spécifique de colonnes  |  Déplacer les colonnes  |  Basculer l'état de visibilité des colonnes masquées  |  Comparer les plages & colonnes ...
Fonctionnalités en vedette : Mise au point de la grille   |  Affichage de conception   |   Barre de formule améliorée    Gestionnaire de classeur & feuille de calcul   |  Bibliothèque dAutoTexte (Auto Text)   |  Sélecteur de date   |  Fusionner les données   |  Crypter/Déchiffrer les cellules    Envoyer un e-mail par liste   |  Super Filtre   |   Filtre spécial (filtrer les cellules avec une police en gras/italique/barré...) ...
Top15 ensembles d'outils12 outils de texte (Ajouter du texte, Supprimer des caractères spécifiques, ...)   |   50+ types de graphiques (Diagramme de Gantt, ...)   |   40+ formules pratiques (Calculer lâge en fonction de la date de naissance, ...)   |   19 outils d'insertion (Insérer un code QR, Insérer une image depuis le chemin, ...)   |  12 outils de conversion (Convertir en mots, Conversion de devises, ...)   |  7 outils de fusion & division (Fusion avancée des lignes, Diviser les cellules, ...)   |   ... et plus

Boostez vos compétences Excel avec Kutools pour Excel, et découvrez une efficacité sans précédent. Kutools pour Excel propose plus de300 fonctionnalités avancées pour augmenter la productivité et gagner du temps.  Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...


Office Tab apporte une interface à onglets à Office, et facilite grandement votre travail

  • Activez la modification et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de50 %, et réduit des centaines de clics de souris pour vous chaque jour !