Bonjour à tous !

Je débute en VB (et en programmation en général) et je dois développer un petit outil très simple pour mon entreprise.

La partie où j'effectue de simples calculs de pourcentages me pose problème :

J'ai créé 6 collections :

  • Une collection de CheckBox : CollCB
  • Trois collections de TextBox : CollTB1, CollTB2 et CollTB3
  • Deux collections de Labels : CollR1 et CollR2 (pour Résultats)


Ces 5 collections ont le même nombre d'éléments, et je procède comme suit :

Si la CB d'indice i est cochée, j'affiche dans les labels d'indice i les résultats de calculs effectués sur le contenu des 3 textbox d'indice i.

Code : 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
        For i As Integer = 1 To CollCB.Count
            If CollCB.Item(i).Checked = False Then
                CollR1.Item(i).Text = ""
                CollR2.Item(i).Text = ""
            Else
                If IsNumber2(CollTB2.Item(i).Text) And IsNumber(CollTB1.Item(i).Text) Then
                    CollR1.Item(i).Text = Math.Round(CollTB2.Item(i).Text / CollTB1.Item(i).Text * 100, 2) & " %"
                ElseIf CollTB1.Item(i).Text = "" Or CollTB2.Item(i).Text = "" Then
                    CollR1.Item(i).Text = "/"
                Else
                    CollR1.Item(i).Text = "Erreur"
                End If
                If IsNumber(CollTB1.Item(i).Text) And IsNumber2(CollTB3.Item(i).Text) Then
                    CollR2.Item(i).Text = Math.Round(CollTB3.Item(i).Text / CollTB1.Item(i).Text * 100, 2) & " %"
                ElseIf CollTB1.Item(i).Text = "" Or CollTB2.Item(i).Text = "" Then
                    CollR2.Item(i).Text = "/"
                Else
                    CollR2.Item(i).Text = "Erreur"
                End If
            End If
        Next
Voilà. Or lorsque j'ai l'option Strict on, il me parle de Late Binding.

J'ai bien compris qu'il s'agit d'un problème de cast implicite.

Je pense avoir une explication partielle (voire partiellement fausse ) : pour lui, les collections pourraient très bien contenir des éléments qui n'ont pas la propriété .Text ou .Checked, etc, et donc il a peur de devoir convertir ?

Comment contourner ce problème autrement qu'en supprimant l'option strict on ?

Merci d'avance pour votre aide !


PS : Au passage j'en profite pour poser une question vis-à-vis des collections.
Dois-je vraiment me taper le CollCB.Add() pour chaque Checkbox etc ? (j'en ai beaucoup) ou y a-t-il un moyen de les ajouter dans le même ordre que leur TabIndex ou je ne sais pas, afin de faire correspondre les indices dans les différentes collections sans avoir à rentrer un par un chaque élément correspondant dans la collection qui va bien ?

(Si quelqu'un a réussi à comprendre sans devoir relire, chapeau, mais au pire zappez cette question)