Bonjour à tous,
Le contexte : j'achète (ou vends) des actions [dans un formulaire simple] sur un à plusieurs fonds [un sous-formulaire continu].
Dans le S/S-F, j'ai une liste déroulante "Fonds". Selon le fonds choisi, je modifie la liste déroulante "contrepartie" qui me liste mes différents comptes en devise.
Chaque fonds a 1 à plusieurs comptes en devise associés.
3 possibilités à chaque fonds :
=> Il y a un compte en devise existant et correspondant à la devise de l'action (renseignée ds le formulaire simple) => le champ "contrepartie" est automatiquement renseigné.
=> Il n'y a pas de compte en devise existant, mais on souhaite en créer un => le champ "contrepartie" est automatiquement renseigné.
=> Il n'y a pas de compte en devise existant, mais on n'en crée pas => le champ "contrepartie" n'est pas renseigné (choix de l'utilisateur parmi les devises existantes... et on paye le taux de change car ce n'est pas la même devise que l'action achetée).
Mon pbl: quand je change la valeur "contrepartie" pour un fonds, elle se change sur tous les fonds => toutes les lignes de mon S/SF continu sont affectées.
Y a-t-il un moyen d'éviter cela et de ne cibler que la valeur de la contrepartie pour le fonds concerné ?
Voici le code utilisé :
Précision : Le champ "Contrepartie" est alimenté par une requête fonction du fonds :
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 Private Sub Fonds_AfterUpdate() Me.Contrepartie.Requery a = 0 For ligne = 0 To Me.Contrepartie.ListCount - 1 If Me.Contrepartie.Column(0, ligne) = Forms("F_TICKET").MaDevise Then Me.Contrepartie = Me.Contrepartie.ItemData(ligne) a = 1 Exit For End If Next If a = 0 Then 'le compte n'existe pas Rep = MsgBox("Le fonds " & Me.Fonds & " n'a pas de compte bancaire en " & Forms("F_TICKET").MaDevise & "." & Chr(10) _ & Chr(10) & "Souhaitez-vous le créer ?", vbYesNo) If Rep = vbYes Then 'création du compte bancaire CurrentDb.Execute "INSERT INTO BANQUE (FdsCourt, Devise)" _ & "Values ('" & Me.Fonds & "','" & Forms("F_TICKET").MaDevise & "')" Me.Contrepartie.Requery For ligne = 0 To Me.Contrepartie.ListCount - 1 If Me.Contrepartie.Column(0, ligne) = Forms("F_TICKET").MaDevise Then Me.Contrepartie = Me.Contrepartie.ItemData(ligne) Exit For End If Next End If End If End If End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT BANQUE.Devise, BANQUE.Banque, BANQUE.LibelleCompte FROM BANQUE WHERE (((BANQUE.FdsCourt)=[Fonds])) ORDER BY BANQUE.Banque;
En vous remerciant chaleureusement d'avance du temps que vous pourrez me consacrer.
Elise
Partager