Cocher Cheklistbox à partir d'une listbox

Résolu
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 27 sept. 2023 à 23:38
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 28 sept. 2023 à 23:39

Bonjour,

Je sollicite vos éclairages pour pouvoir cocher tous les items de la Cheklistbox qui comportent des valeurs présentes dans la listbox .

j’espère que mon explication est claire .je vous joins une capture pour illustrer

merci à vous

ce code de test ne détecte pas les items de la lisbox

For Each itm In CheckedListBox2.Items
                MsgBox(itm)
                Dim s As String = itm
                s = s.Replace(" ", "")
                If CheckedListBox1.Items.Contains(s) Then

                    MsgBox("yes")
                Else
                    MsgBox("No yes")
                End If
            Next


Windows / Fi

refox 117.0

3 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
28 sept. 2023 à 06:55

Bonjour 

tu cherches à comparer des dates mais pas en tant que dates.

En réalité tu compares le .ToString() d'un item de CheckListBox à des items de ListBox.

Comme VB.Net est un langage souple ça pourrait peut-être fonctionner si le format textuel des dates dans les contrôles étaient rigoureusement identiques, mais ce n'est pas le cas.
 

Si tu as codé comme il le faudrait en .Net, tes 2 contrôles ne sont que des afficheurs et il existe dans ton programme 2 collections de données, typées en DateTime. Dans ce cas, c'est avec ces 2 collections qu'il faut travailler. Donne nous la.structure des ces collections et on te proposera des options.

Si ça n'est pas le cas, je t'invite à lire ce tuto sur le binding https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource je pars du principe que tu codes en Winform car rien n'indique une autre technologie dans ton extrait de code.

Si après la lecture de ce tuto, tu entrevois l'intérêt et tu remanies ton code pour t'y adapter, cf au dessus.

Dans la négative, tu vas de voir caster tes items en date pour les comparer et après te rappeler de quel item il s'agit pour le cocher ou non


0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
28 sept. 2023 à 21:42

Bonjour

Toute la solution se trouve dans cette phrase , je pense

En réalité tu compares le .ToString() d'un item de CheckListBox à des items de ListBox.

Du coup j'ai repensé le code  et voila ce qui marche au final .

Dim i As Integer
            For i = 1 To Len(TextBox15.Text) Step 11
                Dim iDate As String = Format(Mid(TextBox15.Text, i, 11))
                Dim oDate As DateTime = Convert.ToDateTime(iDate)
                Dim aurore As Date = oDate.Day & "/" & oDate.Month & "/" & oDate.Year
                For ii = 0 To CheckedListBox1.Items.Count - 1
                    Dim Item As Object = CheckedListBox1.Items(ii)
                    If Item.contains(aurore) Then
                        Me.CheckedListBox1.SetItemChecked(ii, True)
                    End If
                Next ii
                CheckedListBox1.Enabled = False
            Next i

Merci de m'avoir éclairé

0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
28 sept. 2023 à 22:40

C'est quand même beaucoup plus alambiqué que comparer 2 dates....

0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
28 sept. 2023 à 23:39

oui en effet je confirme ..

0