Question sur les ListBox

Bonjour à tous !

Est-il possible de colorier la ligne correspondante dans la ListBox1 si la valeur est présente dans la ListBox2 ?

J'ai 2 Listbox la 1 ère est ma base de données je sélectionne 1 élément et je copie dans la ListBox2

Je voudrais pouvoir colorier la ligne correspondante dans la ListBox1 quand la valeur est présente dans la Listbox2, j'ai essayé quelques codes mais ça ne fonctionne pas...si une personne a une solution je serais preneur

Bonne journée !

Merci !

Bonjour,

Pour mes "listes à listes", je supprime la valeur de la liste 1, une fois dans la liste 2. Et réciproquement.

Bonjour à tous,

Il n'existe pas de propriété ou méthode native pour faire cela Mais vous pouvez utiliser la propriété Selected de la zone de liste 1 pour y arriver.

Dans un formulaire mettez :

  • Une zone de liste ListBox1 sa propriété MultiSelect doit-être sur Multi ou Extended.
  • Une zone de liste ListBox2
  • Une case à cocher CheckBox1
  • Un bouton de commande CommandButton1

Coller ce code dans le module du formulaire, et faites un test.

Option Explicit

Private Sub CommandButton1_Click()
    SelectIfPresent IIf(Me.CheckBox1.value = True, vbTextCompare, vbBinaryCompare)
End Sub

Private Sub UserForm_Activate()
    ListBox1.List = Application.GetCustomListContents(4)
    ListBox2.List = VBA.Array("Janvier", "Novembre")
End Sub

Sub SelectIfPresent(Optional ByVal TypeDeComparaison As VbCompareMethod = vbTextCompare)

    If ListBox1.MultiSelect = 0 Then
        MsgBox "ListBox1 doit avoir sa propriété MultiSelect définie à 1 ou 2 pour pouvoir sélectionner plusieurs éléments.", vbExclamation
        Exit Sub
    End If

    ' // Désélectionner tous les éléments dans ListBox1 avant de commencer
    Dim indexItem As Long
    For indexItem = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(indexItem) = False
    Next indexItem

    ' // Parcourir tous les éléments de ListBox2
    For indexItem = 0 To ListBox2.ListCount - 1
        Dim itemList As String
        itemList = ListBox2.List(indexItem)

        ' // Parcourir tous les éléments de ListBox1 pour la comparaison
        Dim indexItemToBeSelected As Long
        For indexItemToBeSelected = 0 To ListBox1.ListCount - 1

            ' // Effectuer la comparaison
            If StrComp(itemList, ListBox1.List(indexItemToBeSelected), TypeDeComparaison) = 0 Then
                ' // Si les chaînes sont identiques, sélectionner l'élément dans ListBox1
                ListBox1.Selected(indexItemToBeSelected) = True

                ' // Sortir de la boucle ListBox1 pour passer à l'élément suivant de ListBox2
                Exit For
            End If

        Next indexItemToBeSelected
    Next indexItem

End Sub

Voilà à tester et j'attends le retour...

Bonsoir à tous !

Jean-Paul,

merci pour le code qui fonctionne, il me reste juste à adapter à mon formulaire

Bonne soirée !

Rechercher des sujets similaires à "question listbox"