Bonjour,
Je coince sur un soucis.
Dans un état (qui fonctionne bien par ailleurs) j'ai 10 cases à cocher indépendantes.
Les 5 premières s'appellent cochLecteurA_1, _2 , _3, _4, _5. Les 5 suivantes s'appellent cochLecteurB_1, _2 , _3, _4, _5
En face de chacune de ces cases à cocher il y a une étiquette nommée respectivement tktLecteurA_1, _2 , _3, _4, _5 et tktLecteurB_1, _2 , _3, _4, _5 (donc tktLecteurA_1 est à côté de cochLecteurA_1, et ainsi de suite)
Chacune des 5 etiquettes à une légende qui est différente (la première est YB, la seconde LB, la troisième XL, etc...)
Dans ma DB, j'ai un champ texte ("Sujet") (dont la valeur est passée à l'état en OpenArgs) que je dois splitter pour retrouver deux chaînes de caractères (par exemple: "YB/LB"). Chacune de ces deux chaînes de caractères est l'une des légendes inscrite sur les étiquettes.
Je voudrais avant d'imprimer mon état:
- cocher la case à cocher (...A_...) qui est en face de l'étiquette (...A_...) qui a pour légende la première chaîne de caractère
- cocher la case à cocher (...B_...) qui est en face de l'étiquette (...B_...) qui a pour légende la seconde chaîne de caractère
Pour ce faire j'ai commencer à écrire cette sub placée sur l'action chargement de l'état
La récupération des chaines de caractères se passe bien.
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Private Sub Report_Load() 'Lors du chargement de l'état on doit cocher les noms des opérateurs en fonction de ce qui se trouve dans le champ Lecteur de la table SPZ_MIC Dim Lecteurs As String Dim txt1 As String, txt2 As String Dim ctrl As String Dim nomCaC As String Dim i As Integer Dim ctl As Control Lecteurs = Me.OpenArgs If nbOccurence(Chr(34) & Lecteurs & Chr(34), "/") = 1 Then 'on vérifie que la chaine contient bien un / puis on la split txt1 = Split(Lecteurs, "/")(0) txt2 = Split(Lecteurs, "/")(1) End If Debug.Print "txt1 = " & txt1 & "; txt2 = " & txt2 For Each ctl In Me.Controls With ctl Select Case .ControlType Case acLabel If .Caption = txt1 And nbOccurence(.Caption, "A_") = 1 Then nomCaC = "coch" & Right(.Name, (Len(.Caption) - 3)) 'on crèe le nom de la case a cocher qu'on cherche Me.Controls.Item(nomCaC).Value = True Debug.Print "Cac A : " & ctl.Name & " = " & txt1 & "; nomCac A = " & nomCaC End If If .Caption = txt2 And nbOccurence(.Caption, "B_") = 1 Then nomCaC = "coch" & Right(.Name, (Len(.Caption) - 3)) 'on crèe le nom de la case a cocher qu'on cherche Me.Controls.Item(nomCaC).Value = True Debug.Print "Cac B : " & ctl.Name & " = " & txt2 & "; nomCac B = " & nomCaC End If End Select End With Next ctl End Sub
Aussi bizarre que cela paraît, le code ne me met aucune erreur pour le .Caption alors que ça n'est pas une propriété de ctl normalement... (sauf si je fais erreur)
Et d'autant plus bizarre, ça me coche toujours la première case à cocher quelque soit le contenu de la première chaîne txt1...
Pourriez-vous m'aider à résoudre mon souci ? je continue de cherche de mon côté pour résoudre ce problème...
Merci d'avance de vos suggestions/idées/aide :-)
Partager