Dans cet article, nous allons apprendre à créer une zone de liste dans laquelle nous pouvons sélectionner plusieurs noms et obtenir les données requises à partir des données principales.

Comprenons avec l’exercice simple: – Nous avons pris des données dans lesquelles nous avons le détail de l’identifiant de messagerie de chaque employé.

Data

Suivez les étapes ci-dessous pour créer la zone de liste qui offre l’option de sélection de plusieurs choix en utilisant le code VBA: –

Insertion d’une zone de liste

Pour insérer une zone de liste sur une feuille Excel, allez dans l’onglet Développeur> Cliquez sur Insérer> puis cliquez sur le bouton Zone de liste sous Contrôle ActiveX

ArrowInsertingListBox

Sur l’onglet Développeur, cliquez sur Mode Conception pour activer la conception, puis cliquez sur Propriétés dans l’onglet Développeur, la boîte de dialogue Propriétés apparaîtra.

Sélectionnez la zone Liste, puis accédez à la boîte de dialogue Propriétés. Cliquez sur l’onglet Catégorisé. Sous l’en-tête Misc, accédez à la propriété ListFillRange et affectez la plage qui contient les valeurs de la zone de liste.

Sous l’en-tête Comportement, remplacez la propriété Multiselect par 1-fmMultiSelectMulti

ArrowPropertiesDialogBox

ArrowPropertiesDialogBox-2

Maintenant, insérez deux boutons de commande sur la feuille Excel, allez dans l’onglet Développeur> Cliquez sur Insérer> puis cliquez sur l’icône du bouton sous Contrôle de formulaire

ArrowCommandButton

Cliquez avec le bouton droit sur le bouton et sélectionnez la propriété Modifier le texte et renommez les deux boutons en «Désélectionner les noms» et «Soumettre».

Appuyez sur la touche Alt + F11 pour ouvrir Visual Basic Editor Ajouter un nouveau module et insérer le code ci-dessous dans le module.

Le code «Coding Above» contient deux procédures GettingSelectedItems et UnselectedItems. Affectez la procédure GettingSelectedItems to Submit button et la procédure UnselectedItems to Unselect Names bouton

ArrowAssigningMacro

AssigningMacro

Après avoir attribué la procédure, désactivez le mode de conception en cliquant sur le bouton du mode de conception dans l’onglet Développeur.

Explication logique

Dans cet exemple, notre objectif est de récupérer l’ID de messagerie du nom sélectionné par l’utilisateur dans la colonne List Box to L.

L’utilisateur peut sélectionner plusieurs noms dans la zone de liste. Après avoir sélectionné les noms, l’utilisateur appuiera sur le bouton Soumettre et l’identifiant de courrier électronique correspondant au nom sélectionné dans la zone de liste apparaîtra dans la colonne L de la feuille Excel.

Si l’utilisateur souhaite désélectionner tous les noms sélectionnés dans la zone de liste, l’utilisateur peut cliquer sur le bouton «Désélectionner les noms».

Pour atteindre l’objectif ci-dessus, nous avons utilisé une formule et une procédure Excel.

La procédure GettingSelectedItems est écrite pour obtenir le nom sélectionné de la zone de liste dans la plage K10 à K23.

Pour obtenir l’ID de messagerie du nom sélectionné, nous avons utilisé la formule Excel suivante: – = IFERROR (VLOOKUP (K10, $ A $ 10: $ B $ 23,2,0), «  »)

Insérez la formule ci-dessus dans la cellule L10 et copiez et collez cette formule dans la plage L10 à L23.

Cette formule fournira l’ID de messagerie en recherchant le nom sélectionné dans la plage A10 à B23.

Nous avons masqué les valeurs dans la plage K10 à K23 en utilisant la même couleur pour la police et l’arrière-plan de la cellule.

Veuillez suivre ci-dessous pour le code

Option Explicit

Sub GettingSelectedItems()

'Getting selected items in ListBox1

Application.ScreenUpdating = False

'Declaring varialbes

Dim ValueSelected As String, i, r As Integer

'deleting selected values

Range("K10:K23").Select

Selection.ClearContents

'Defining listbox1 of sheet TestDialog

With Sheets("TestDialog").ListBox1

r = 0



'Using For loop for looping through all the items in List Box

For i = 0 To .ListCount - 1

'Using .selected for selecting only those value which is selected by user in listbox

If .Selected(i) Then

'Assigning selected value of List Box to Column K on the sheet

Cells(r + 10, 11).Value = .List(i)

r = r + 1

End If

Next i

End With

Range("L10").Select

End Sub

Sub UnselectedItems()

'Unselecting all the items in the list box

Application.ScreenUpdating = False

'Declaring varialbes

Dim ValueSelected As String, i As Integer

'Defining listbox1 of sheet TestDialog

With Sheets("TestDialog").ListBox1

'Using For loop for looping through all the items in List Box

For i = 0 To .ListCount - 1

'Unselecting all the items in the list

.Selected(i) = False

Next i

End With

'Deleting data from range K10 to K23

Range("K10:K23").Select

Selection.ClearContents

Range("L10").Select

End Sub

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous aimerions avoir de vos nouvelles, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]