Bonsoir,
Soit 3 listes : A,B,C et mon postulat A+B = C
Exemple avec 3 valeurs de références.
C = 1,2,3
si A = 1,2 alors B = 3
et Si je supprime 2 de A, alors B = 2,3
La propriété rowsource permet-elle de faire cela ?
Cordialement
EL
Bonsoir,
Soit 3 listes : A,B,C et mon postulat A+B = C
Exemple avec 3 valeurs de références.
C = 1,2,3
si A = 1,2 alors B = 3
et Si je supprime 2 de A, alors B = 2,3
La propriété rowsource permet-elle de faire cela ?
Cordialement
EL
peut être ainsi
la liste A possède les valeurs 1;2 et la liste B la valeur 3
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 Private Sub A_Click() Dim A As String, B As String B = Me!B.RowSource 'recupère la donnée de B A = Me!A.RowSource 'récupère la donnée de A If InStr(1, A, ";" & Me!A) > 1 Then 'teste l'emplacement de ; avant A = Replace(A, ";" & Me!A, "") Else If InStr(1, A, Me!A & ";") > 0 Then 'après A = Replace(A, Me!A & ";", "") Else 'ou pas du tout A = "" End If End If B = B & ";" & Me!A 'récupère dans B la valeur de A If Left$(B, 1) = ";" Then B = Mid$(B, 2) Me!B.RowSource = B 'réinitialise les listes Me!B.Requery Me!A.RowSource = A Me!A.Requery End Sub Private Sub B_Click() 'c'est pareil Dim A As String, B As String B = Me!B.RowSource A = Me!A.RowSource If InStr(1, B, ";" & Me!B) > 1 Then B = Replace(B, ";" & Me!B, "") Else If InStr(1, B, Me!B & ";") > 0 Then B = Replace(B, Me!B & ";", "") Else B = "" End If End If A = A & ";" & Me!B If Left$(A, 1) = ";" Then A = Mid$(A, 2) Me!B.RowSource = B Me!B.Requery Me!A.RowSource = A Me!A.Requery End Sub
Hello,
tu peux généraliser et utiliser une fonction générique.
Exemple d'utilisation en suppression
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 Function AddRemoveItem(ByVal strList As String, ByVal intIndex As Long, _ Optional ByVal strItem As String = "") As String Dim tmp() As String Dim i As Long If strItem = "" Then ' on supprime l'élément tmp = Split(strList, ";") For i = 0 To UBound(tmp) If i <> intIndex Then AddRemoveItem = AddRemoveItem & ";" & tmp(i) End If Next i AddRemoveItem = Mid(AddRemoveItem, 2) Else ' on insère tmp = Split(strList, ";") For i = 0 To UBound(tmp) If i <> intIndex Then AddRemoveItem = AddRemoveItem & ";" & tmp(i) Else AddRemoveItem = AddRemoveItem & ";" & strItem & ";" & tmp(i) End If Next i AddRemoveItem = Mid(AddRemoveItem, 2) End If End Function
Exemple d'utilisation en ajout
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ?addremoveitem("1;2;3;4;5",2) 1;2;4;5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ?addremoveitem("1;2;3;4;5",1,"toto") 1;toto;2;3;4;5
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
12 tutoriels Access
Merci à tous les 2, je vais regarder cela dans le détail.
R1
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager