[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 !