Accéder au contenu principal

Comment déplacer rapidement des éléments entre deux zones de liste dans Excel ?

Author: Sun Last Modified: 2025-05-27

Avez-vous déjà essayé de déplacer des éléments d'une zone de liste à une autre selon vos besoins, comme le montre la capture d'écran ci-dessous ? Je vais vous parler de cette opération dans Excel.

a screenshot showing the listboxes before moving items a screenshot of an arrow a screenshot showing the listboxes after moving items

Déplacer des éléments entre des zones de liste


Déplacer des éléments entre des zones de liste

Il n'y a aucune fonction intégrée qui peut vous aider à terminer la tâche, mais j'ai un code VBA qui peut vous rendre service.

1. Tout d'abord, vous devez créer une liste de données qui sera affichée sous forme d'éléments dans les zones de liste dans une nouvelle feuille appelée Admin_Lists.

a screenshot of the source data

2. Ensuite, sélectionnez ces données et allez dans la zone Nom pour leur donner un nom : ItemList. Voir la capture d'écran :

a screenshot of naming the source data in the Name box

3. Puis, dans une feuille qui contiendra les deux zones de liste, cliquez sur Développeur > Insérer > Zone de liste (Contrôle ActiveX), et dessinez deux zones de liste. Voir la capture d'écran :

a screenshot of selecting the List Box control under the Developer tab a screenshot of the right arrow a screenshot showing two created list boxes

Si l'onglet Développeur est masqué dans votre ruban, Comment afficher/l'afficher l'onglet Développeur dans le Ruban Excel 2007/2010/2013 ? Cet article vous expliquera comment l'afficher.

4. Ensuite, cliquez sur Développeur > Insérer > Bouton de commande (Contrôle ActiveX), et dessinez quatre boutons entre les deux zones de liste. Voir la capture d'écran :

a screenshot of selecting command button control a screenshot of a right arrow 1 a screenshot showing the created command buttons

Maintenant, renommez les quatre boutons de commande avec de nouveaux noms.

5. Sélectionnez le premier bouton de commande, cliquez sur Propriétés, et dans le volet Propriétés, donnez-lui le nom BTN_moveAllRight, et tapez >> dans la zone de texte à côté de Légende. Voir la capture d'écran :

a screenshot showing how to changing the properties of the command button

6. Répétez l'étape 5 pour renommer les trois derniers boutons de commande avec les noms ci-dessous, et tapez également différentes flèches dans les légendes. Voir la capture d'écran :

BTN_MoveSelectedRight

BTN_moveAllLeft

BTN_MoveSelectedLeft

a screenshot of the second command button after changing the properties a screenshot of the third command button after changing the properties a screenshot of the fourth command button after changing the properties

7. Faites un clic droit sur le nom de la feuille qui contient les zones de liste et les boutons de commande, puis sélectionnez Afficher le code dans le menu contextuel. Voir la capture d'écran :

a screenshot of opening the VBA code editor

8. Copiez et collez le code macro ci-dessous dans le script du Module, puis enregistrez le code et fermez la fenêtre Microsoft Visual Basic pour Applications. Voir la capture d'écran :

VBA : Déplacer des éléments entre deux zones de liste

Private Sub Worksheet_Activate()
'UpdatebyExtendoffice20171117
    Dim xCell As Range
    Dim xRg As Range
    Set xRg = Sheets("Admin_Lists").Range("ItemList")
    Me.ListBox1.Clear
    Me.ListBox2.Clear
    With Me.ListBox1
        .LinkedCell = ""
        .ListFillRange = ""
        For Each xCell In xRg
            If xCell <> "" Then
                .AddItem xCell.Value
            End If
        Next xCell
    End With
    Me.ListBox1.MultiSelect = fmMultiSelectMulti
    Me.ListBox2.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub BTN_MoveSelectedLeft_Click()
    Call moveSigle(Me.ListBox2, Me.ListBox1)
End Sub

Private Sub BTN_MoveSelectedRight_Click()
    Call moveSigle(Me.ListBox1, Me.ListBox2)
End Sub

Private Sub BTN_moveAllLeft_Click()
    Call moveAll(Me.ListBox2, Me.ListBox1)
End Sub

Private Sub BTN_moveAllRight_Click()
    Call moveAll(Me.ListBox1, Me.ListBox2)
End Sub

Sub moveAll(xListBox1 As Object, xListBox2 As Object)
    Dim I As Long
    For I = 0 To xListBox1.ListCount - 1
        xListBox2.AddItem xListBox1.List(I)
    Next I
    xListBox1.Clear
End Sub

Sub moveSigle(xListBox1 As Object, xListBox2 As Object)
    Dim I As Long
    For I = 0 To xListBox1.ListCount - 1
        If I = xListBox1.ListCount Then Exit Sub
        If xListBox1.Selected(I) = True Then
            xListBox2.AddItem xListBox1.List(I)
            xListBox1.RemoveItem I
            I = I - 1
        End If
    Next
End Sub

a screenshot showing how to use the VBA code

9. Ensuite, allez dans une autre feuille, puis revenez à la feuille contenant les zones de liste. Maintenant, vous pouvez voir que les données de la liste ont été listées dans la première zone de liste. Cliquez sur les boutons de commande pour déplacer les éléments entre les deux zones de liste.

a screenshot showing the source data in one list box after running the VBA code

Déplacer la sélection

a screenshot of moving items from one list box to another one by one a screenshot of the arrow a screenshot showing two items have been moved to the right list box

Tout déplacer

a screenshot of marking which command button can be used to move all items from one list to another at the same time a screenshot of arrow 2 a screenshot showing all items are moved from one list box to another at the same time

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 !