CHAMP CALCULE CONDITIONNEL ACCESS
Résolu/Fermé
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
-
25 sept. 2005 à 20:59
Siroua - 2 avril 2008 à 20:21
Siroua - 2 avril 2008 à 20:21
A voir également:
- Access champ calculé conditionnel
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
- Formatage conditionnel excel - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Champs calculé tcd formule si - Forum Excel
- Acer quick access - Forum Logiciels
10 réponses
blux
Messages postés
26490
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 novembre 2024
3 316
28 sept. 2005 à 14:06
28 sept. 2005 à 14:06
Salut,
alors moi je ne passe pas par un champ de precalcul (c'est totalement inutile).
Je te propose la chose suivante :
Tu crées un formulaire "Formulaire1" avec 4 contrôles de type texte dedans (nommés A, B, Date_Sortie, Resultat)
Tu crées un module (dans la fenêtre base de données) avec ce code-là :
Ensuite, il ne reste plus qu'à affecter du code dans la propriété "après maj" des trois premiers contrôles en mettant un appel à la sous-procédure MajResu définie dans le module :
Comme ça, dès que tu saisis qq chose et que le focus passe sur un autre champ, on recalcule...
Mais comme ton algorithme n'est pas en phase avec les exemples que tu m'as proposés, j'ai fait en fonction de l'algo, à toi de voir ce qu'il faut modifier en fonction de tes besoins...
alors moi je ne passe pas par un champ de precalcul (c'est totalement inutile).
Je te propose la chose suivante :
Tu crées un formulaire "Formulaire1" avec 4 contrôles de type texte dedans (nommés A, B, Date_Sortie, Resultat)
Tu crées un module (dans la fenêtre base de données) avec ce code-là :
Public Sub MajResu() Dim ValA As Long Dim ValB As Long Dim Diff As Long If IsNull(Forms!Formulaire1.Controls("A").Value) Then ValA = 0 Else ValA = Val(Forms!Formulaire1.Controls("A").Value) End If MsgBox ValA If IsNull(Forms!Formulaire1.Controls("B").Value) Then ValB = 0 Else ValB = Val(Forms!Formulaire1.Controls("B").Value) End If MsgBox ValB Diff = ValA - ValB MsgBox Diff If Diff < 0 Then Forms!Formulaire1.Controls("Resultat").Value = 0 Exit Sub End If If Diff >= 0 Then Forms!Formulaire1.Controls("Resultat").Value = Diff Exit Sub End If If ValB = 0 Then If IsNull(Forms!Formulaire1.Controls("Date_Sortie").Value) Then Forms!Formulaire1.Controls("Resultat").Value = 0 Else Forms!Formulaire1.Controls("Resultat").Value = Diff End If End If End Sub
Ensuite, il ne reste plus qu'à affecter du code dans la propriété "après maj" des trois premiers contrôles en mettant un appel à la sous-procédure MajResu définie dans le module :
Private Sub A_AfterUpdate() MajResu End Sub Private Sub B_AfterUpdate() MajResu End Sub Private Sub Date_Sortie_AfterUpdate() MajResu End Sub
Comme ça, dès que tu saisis qq chose et que le focus passe sur un autre champ, on recalcule...
Mais comme ton algorithme n'est pas en phase avec les exemples que tu m'as proposés, j'ai fait en fonction de l'algo, à toi de voir ce qu'il faut modifier en fonction de tes besoins...