IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères

Noter ce billet
par , 03/04/2022 à 08h47 (4107 Affichages)
Introduction

Dans un billet précédent, titré VBA - Fonction qui renvoie une chaîne de caractères des éléments sélectionnés dans un ListBox , j'ai publié une fonction nommée GetSelectedValues qui renvoie une chaîne de caractères reprenant tous les éléments sélectionnés dans un ListBox séparés par un ";".
Dans ce billet, je vous propose un fonction nommée SetSelectedValues qui sélectionne dans le ListBox tous les éléments, séparés par un ";", présents dans une chaîne de caractères.

Nom : ListBox - MultiSelect - Function SetSelected.png
Affichages : 75
Taille : 26,8 Ko

Code de la procédure

Il suffit de passer à la fonction SetSelectedValues, les deux arguments oList et Value pour que la sélection s'effectue dans le ListBox
Exemple : SetSelectedValues ListBox1, "Poire;Cerise;Abricot;Raisin"
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function SetSelectedValues(oListBox As MSForms.ListBox, Optional Value As String)
  ' Modifie la propriété Selected du ListBox (True = Sélectionné)
  ' Arguments
  '   oListBox        ' Objet ListBox
  '   [Value]         ' Valeurs à sélectionner séparés par ";"
  ' Philippe Tulliez (https://MagicOffice.be)
  '
  ' Déclaration des variables
  Dim Tv As Variant   ' Valeurs à sélectionner
  Dim Tl As Variant   ' Table de la liste
  Dim Tf As Variant   ' Table filtrée
  Dim Elem As Integer
  If Len(Value) Then
     Tv = Split(Value, ";")
     With oListBox
       Tl = .List                          ' Charge la Liste du ListBox
       For Elem = 0 To UBound(Tl)
        Tf = Filter(Tv, Tl(Elem, 0), True)
       .Selected(Elem) = UBound(Tf) > -1   ' Modifie la valeur de la propriété
       Next
     End With
  End If
End Function

Code d'une procédure qui l'invoque

Exemple utilisé

Un UserForm nommé usf_MultiSelect contenant un ListBox nommé ListBox1
La liste du ListBox est alimentée par la table structurée nommée t_Fruit
La cellule nommée LinkedCell est celle qui contient à la fois la chaîne de caractères qui sert de valeur pour l'argument Value de la procédure SetSelectedValues et le résultat renvoyé par la fonction GetSelectedValues (voir les liens plus bas)

Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Main()
  ' Philippe Tulliez htts://MagicOffice.be
  ' Déclaration et assignation des constantes & variables
  Const TableName As String = "t_Fruit"         ' Nom de la table utilisée comme liste
  Const LinkedCellName As String = "LinkedCell" ' Nom de la cellule source & cible
  Dim Rng As Range
  Dim Msg As String
  Set Rng = Range(TableName)
  '
  With usf_MultiSelect
    With .ListBox1
    .ColumnWidths = GetColumnWidths(Rng)
    .ColumnCount = Rng.Columns.Count
    .List = Rng.Value
    .MultiSelect = fmMultiSelectMulti    ' Définit la multisélection
    .ListStyle = fmListStyleOption       ' Style Case à cocher
    End With
    SetSelectedValues .ListBox1, Range(LinkedCellName)
  .Show
   If .IsOk Then Range("LinkedCell").Value = GetSelectedValues(.ListBox1)
  End With
  Unload usf_MultiSelect
  Set Rng = Nothing
End Sub

Liens vers les articles traitant des fonctions génériques utilisées dans la procédure ci-dessus



Illustration

Nom : Webp.net-gifmaker.gif
Affichages : 88
Taille : 149,6 Ko

Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog Viadeo Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog Twitter Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog Google Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog Facebook Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog Digg Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog Delicious Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog MySpace Envoyer le billet « VBA - Fonction qui sélectionne les éléments d'un ListBox (MultiSelect) en fonction d'une chaîne de caractères » dans le blog Yahoo

Mis à jour 03/04/2022 à 16h53 par Philippe Tulliez

Catégories
VBA Excel

Commentaires