Code VBA qui valide si la même valeur se retrouve dans deux sous-formulaire

-
Bonjour Forum,

Je travaille actuellement sur une base de données qui servira à imprimer des relevés pour des courtiers immobiliers.
Mon formulaire principal contient deux sous-formulaires : le premier pour y saisir les informations concernant les commissions à payer au courtier, le second pour les frais et dépenses que le courtier doit acquitter.

Ces deux sous-formulaires sont bien sûr basés sur deux tables différentes : TbCommission et TbDepense

Elles ont trois champs communs : Nom (du courtier), Numero (du relevé) et DateReleve, que l'on retrouve dans les sous-formulaires, au moment de la saisie des données.

Pour me permettre de poursuivre avec mes calculs et soustractions, j'ai besoin de l'action suivante :

Une fois ma saisie faite pour un relevé donné, je voudrais que, SI j'ai dans mes deux tables le même nom (de courtier) et le même numéro (de relevé), alors la date (du relevé) doit être copiée dans le champ DateDeduction de ma table TBDepense, pour les enregistrements correspondants.

Pourquoi ? Parce que cela me permettra de calculer le solde à payer par un courtier, le cas échéant. Tous les enregistrements de dépenses qui auront une date dans le champ DateDeduction auront été déduits automatiquement des commissions à payer, donc ne seront plus à payer.

Bien sûr, je pourrais y aller avec une saisie manuelle de la date dans le champ DateDeduction, mais il pourrait y avoir des erreurs de ligne, de saisie, etc.

Quelqu'un peut-il m'aider ?

Merci beaucoup à l'avance.


Configuration: Windows / Edge 17.17134
Afficher la suite 

7 réponses

Messages postés
8316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 août 2019
412
0
Merci
bonjour, tu peux probablement réaliser ce que tu décris avec un code VBA associé au formulaire.
cependant, je soupçonne que la structure de tes données (les information dans tes tables) n'est pas correcte.
tes explications ne sont pas très claires: tu ne précises pas si les informations dont tu parles sont celles des formulaires ou celles des tables
ne serait-il pas préférable d'avoir une table "relevés"?
Commenter la réponse de yg_be
Messages postés
4
Date d'inscription
mardi 6 août 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Bonjour yq_be,

Tout d'abord merci de ton temps.
Les informations dont je parle sont celles des tables.
J'ai effectivement une table TbReleve, qui comporte 3 champs : le numéro du relevé, sa date et le nom du courtier.
Les deux autres tables contiennent les détails de l'écriture.
Je pensais mettre le code de vérification des données communes sur mon bouton Ok qui génère la ligne dans la table des relevés.
Je peux essayer de créer un DB avec des informations bidons et tu pourras voir comment elle fonctionne (d'ici à demain).
Il ne me manque plus que ce dernier point pour finaliser la formule de solde sur mon état...
Commenter la réponse de Seiquo
Messages postés
4
Date d'inscription
mardi 6 août 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Voici le lien vers le fichier test :

https://www.cjoint.com/c/IHgtDGXzKJL

Encore merci ! Et je suis preneuse de conseils si quoi que ce soit est mal pensé ! :)
Commenter la réponse de Seiquo
Messages postés
875
Date d'inscription
mercredi 5 juillet 2017
Statut
Membre
Dernière intervention
15 août 2019
22
0
Merci
Bonjour,

le nom du courtier n'est pas une bonne idée, autant renseigner son numéro (clé primaire)...

J'ai un peu de mal à savoir ce que tu veux réellement, je lis et relis, mais je ne pige pas.

A+
Commenter la réponse de HDU
Messages postés
875
Date d'inscription
mercredi 5 juillet 2017
Statut
Membre
Dernière intervention
15 août 2019
22
0
Merci
C'est quoi "un relevé" ???



Commenter la réponse de HDU
Messages postés
4
Date d'inscription
mardi 6 août 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Bonsoir HDU,

Un relevé, ce serait un état des commissions à payer au courtier et des dépenses à rembourser de sa part. Ils sont sortis une à deux fois par mois.

Il peut y avoir :

- Un état avec seulement des commissions - dans ce cas, je paye le montant au courtier et on n'en parle plus. Il ne me doit pas d'argent.

- des états avec seulement des dépenses - dans ce cas, le courtier me fait un chèque pour me les rembourser, je saisis une date manuellement à la réception de son paiement dans DateDeduit et le solde à me devoir en dépenses s'ajuste (j'ai une requête à fignoler pour ça).

- des états avec à la fois des commissions ET des dépenses.
Dans ce cas, supposons que j'ai 3000 $ de commissions à payer au courtier, et 200$ de dépenses qu'il me doit. Donc sur l'état que j'imprime, j'ai un champ qui calcule les commissions moins les dépenses et qui montre que je ne lui devrai plus que 2800$.
Cependant, je ne veux pas que les 200$ continuent d'apparaître comme une somme qu'il me doit encore, puisque je lui déduis directement de ses commissions. Donc je voudrais que la date du relevé s'inscrive tout de suite dans le champ DateDeduit, pour que le solde à me devoir en dépenses ne prenne pas en compte ce montant. Je voudrais éviter une saisie manuelle car il y a souvent plusieurs lignes de dépenses impliquées.

Est-ce que c'est plus clair ?
HDU
Messages postés
875
Date d'inscription
mercredi 5 juillet 2017
Statut
Membre
Dernière intervention
15 août 2019
22 -
Je regarde cela ce soir.

Bonne journée.

A+
Commenter la réponse de Seiquo
Messages postés
8316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 août 2019
412
0
Merci
je pense qu'il est préférable de ne pas avoir de champ DateDeduction dans la table TBDepense. Il est préférable d'utiliser une requête pour utiliser les informations de la table TBReleve.
yg_be
Messages postés
8316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 août 2019
412 -
où et comment les paiements et les chèques sont-ils enregistrés?
Seiquo
Messages postés
4
Date d'inscription
mardi 6 août 2019
Statut
Membre
Dernière intervention
7 août 2019
-
Lorsqu'on reçoit un chèque, alors on entre la date de réception dans la colonne DateDeduit, sur chaque ligne concernée par le chèque, pour que la somme ne soit plus prise en compte dans le solde à recevoir. Dans ce cas, on ne peut pas faire autrement que les saisir manuellement.
Commenter la réponse de yg_be