Bonjour,
Je suis bien bloquée...
Je voudrais qu'à partir de ma sélection d'une table dans ma liste déroulante des cases à cocher soient cochées.
/*La liste déroulante fonctionne 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 Private Sub Form_Load() '*************************************************************************************** '* Liste thème existants * '*************************************************************************************** 'Déclaration d'une chaîne vide pour stocker une liste de valeurs Dim TblNames As String TblNames = "" 'Boucler For Each parcoure la collection AllTables, ajoute le nom de chaque table à la variable TblNames, entre guillemets et suivi d'un ';' Dim tbl As AccessObject For Each tbl In CurrentData.AllTables 'Exclusion de toutes les tables ne correspondant pas un thème (cad ne respectant pas la toponymie AAMMJJ-Thèmes) If Not Left(tbl.name, 22) <> "AAMMJJ-Thèmes" Then TblNames = TblNames + Chr(34) + tbl.name + Chr(34) + ";" End If Next tbl 'La chaîne TblNames contient maintenant le nom de toutes les tables thèmes entrées en base 'L'affecte à la propriété Contenu du contrôle de la liste déroulante Ld-ThemeExist Me!Ld_ThemeExist.RowSourceType = "Value List" Me!Ld_ThemeExist.RowSource = TblNames 'Sélectionne le rpemier élément de contrôle Me!Ld_ThemeExist.Value = Me!Ld_ThemeExist.ItemData(0) 'Assure que l'utilisateurs ne peut sélection qu'une table valide Me!Ld_ThemeExist.LimitToList = True End Sub
/* Le problème se trouve ici.
Je souhaite récuprérer les valeurs du premier champs de la colonne "Variable1" de la table sélectionnée dans la lsite déroulante. Le champs se présente comme ceci "1,2,5". Donc je récupére une valeur après chaque virgule et je la compare à mon numéro de case à cocher.
Si les valeurs correspondent alors la case à cocher est cochée.
Mon problème est que cela ne fonctionne pas et je n'ai pas de message d'erreur.
Les tables de la liste déroulante réprésentant chacun un thème. Les cases à cocher sont des critères de ces thèmes.
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
40
41
42
43
44
45
46
47 Private Sub Ld_ThemeExist_Change() Dim i As Integer, n As Integer, y As Integer, m As String ' Déclaration pour la phase de sélection Dim rstTable1 As Recordset Dim strSerial As String, strChaine As String Dim X As Integer Dim maTable1 As String For i = 1 To Ld_ThemeExist.ListCount - 1 If Ld_ThemeExist.Selected(i) Then maTable1 = Ld_ThemeExist.RowSource Set rstTable1 = CurrentDb.OpenRecordset(maTable1) While Not rstTable1.EOF strSerial = rstTable1("Variable1") X = 1 Do Until X = 0 doublon = False X = InStr(1, strSerial, ",", vbTextCompare) ' Longueur de la chaîne jusqu'à la virgule If X = 0 Then ' Si on se trouve sur le dernier numéro strChaine = strSerial Else strChaine = Mid(strSerial, 1, X - 1) End If strSerial = Mid(strSerial, Len(strChaine) + 2) ' On enlève le numéro en cours avec la virgule qui le suit For y = 1 To 9 m = "CHK" & y If y = strSerial Then Me.Controls(m).Value = True End If Next y Loop rstTable1.MoveNext Wend Set rstTable1 = Nothing End If Next i End Sub
Si dans le colonne "Variables1" de ma table sélectionnée dans la listbox, j'ai "1,6,7", alors les cases à cocher 1, 6 et 7 seront automatiquement cochées.
J'espère que cela reste relativement clair.
Je suis dans l'urgence et mes tentaives de solutions ne me semblent pas convainquantes...
Merci pour votre aide.
Partager