[VBA] - ListBox - Effectuer le changement pour tous les résultats

Bonjour,

Dans mon document je travaille avec des codes, un UserForm liste les codes qui posent problème (avec ListBox).

En l'occurrence, il arrive que l'erreur "code jumeau" apparaisse "x" fois pour le même code.

En général, il est nécessaire de vérifier code après code de quel jumeau il s'agit. Pour effectuer la correction, on sélectionne dans une ComboBox qui s'affiche le résultat approprié.

Mais dans certains cas, j'aimerais que si l'on coche une case (présente dans l'UF), la sélection faite dans la ComboBox s'applique à tous les codes identiques, trouvés dans la ListBox.

Sur ce lien, un document de travail, car c'est assez complexe : https://cjoint.com/c/IKDnduMVNFB

Est-ce que vous savez comment je dois m'y prendre ?

L'exécution du code peut prendre un peu de temps, si vous avez également une solution pour augmenter la rapidité d'exécution du code je suis preneur !

Je vous remercie de votre attention,

Bonne journée !

Bonjour,

Ce code a initialement été proposé par Thev, légèrement modifié et adapté par moi même.

Si Thev passe dans le coin et tombe sur ce message, peut-être saura-t-il mieux comment procéder.

Bonne journée

Bonsoir,

J'ai finalement trouvé la solution en modifiant mon code comme suit :

Private Sub Lbx_correspondances_Click()
    Set co = Worksheets("Correspondances")
    Dim espèce As String, correspondance As String
    lrco = co.Cells(Rows.Count, 1).End(xlUp).Row

    With Me.Lbx_correspondances
        espèce = .List(.ListIndex, 1)
        correspondance = .List(.ListIndex, 2)
        If correspondance = Erroné Then
            Modif_erroné.Show

            t = .List(.ListIndex, 1)
            If Modif_erroné.CheckBox1 = True Then
                For k = 0 To .ListCount - 1
                        If .List(k, 1) = t Then
                            .List(k, 1) = Modif_erroné.Tbx_code
                        End If
                Next k
                Unload Modif_erroné
            Else
                .List(.ListIndex, 1) = Modif_erroné.Tbx_code
                Unload Modif_erroné
            End If
        End If
        If correspondance = jumeau Then
            Load Modif_jumeau
            Call remplissage_combobox_jumeau(espèce)
            Modif_jumeau.Show

            If Modif_jumeau.CheckBox1 = True Then
                For k = 0 To .ListCount - 1
                        If .List(.ListIndex, 1) = .List(k, 1) Then
                            .List(k, 2) = Modif_jumeau.Cbx_jumeau
                        End If
                Next k
                Unload Modif_jumeau
            Else
                .List(.ListIndex, 2) = Modif_jumeau.Cbx_jumeau
                Unload Modif_jumeau
            End If
        End If
        If correspondance = Synonymes Then
            Load Modif_synonymes
            Call remplissage_combobox_synonymes(espèce)
            Modif_synonymes.Show
            .List(.ListIndex, 2) = Modif_synonymes.Cbx_synonymes
            Unload Modif_synonymes
        End If
        End With
End Sub

Bonne soirée !

Rechercher des sujets similaires à "vba listbox effectuer changement tous resultats"