Opération selon sélection dans une liste (Access)

Résolu/Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 1 oct. 2017 à 22:49
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 4 oct. 2017 à 02:02
Bonjour,

Sous Access 2010 :

J'ai dans un formulaire (Saisie_Acc) un champ [Type_anest] avec liste de choix. On peut cocher plusieurs choix.

J'ai un autre champ [Epidurale] booléen. J'aimerais que si dans le premier champ, telle valeur est sélectionnée, le deuxième champ soit coché (-1), et sinon décoché (o).

Je n'arrive pas à le faire dans les macro Access, car les champs avec listes de choix ne peuvent pas y être utilisées dans le générateur d'expression. Je me demande si c'est possible sous VBA.

J'ai mis le code dans une private sub du formulaire, sub = Type_anest_AfterUpdate()

J'ai essayé :
If Me.Type_anest.value like "Épidurale" then
Me.Epidurale.Value=-1
Else Me.Epidurale.Value=0
End if

Ainsi que :
If Me.Type_anest.ItemsSelected Like "*" & "Épidurale" & "*" Then
Me.Epidurale.Value = -1

Else: Me.Epidurale.Value = 0
End If

Et enfin :
If Me.Type_anest.Value Like "*" & "Épidurale" & "*" Then
Me.Epidurale.Value = -1
Else: Me.Epidurale.Value = 0
End If

Mais ni l'un ni l'autre ne fonctionne.

J'aurais besoin de savoir :
1. Est-ce possible?
2. Si oui, comment???

Merci à l'avance!

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
2 oct. 2017 à 18:08
bonjour,
moi j'essaierais ceci:
Me.Epidurale.Value = false
For Each varItm In Me.Type_anest.ItemsSelected 
 if instr(Me.Type_anest.ItemData(varItm),"Épidurale") >0 then
     Me.Epidurale.Value = true
end if 
Next varItm 
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
Modifié le 4 oct. 2017 à 01:24
Doit bien y avoir quelque chose que je fais de pas correct...
J'avais bien espoir que ça fonctionne, mais non!

J'avais trouvé, sur un autre site ( https://www.developpez.net/forums/d551510/logiciels/microsoft-office/access/vba-access/condition-genre-champ-contient-ca-existe/ ) une suggestion :
p = instr(0,coderisque,'2')
if p>0 then
chk2 = -1
else
chk2 =0
end if


Mais je n'arrivais pas à l'appliquer à ma BDD. Je pensais que votre réponse était la bonne. Je l'ai essayée en VBA dans le formulaire concerné, au champ concerné :`
Essai 1 : Type_anest_AfterUpdate()
Essai 2 : Type_anest_Dirty(Cancel As Integer)

Qu'est-ce que je devrais faire et que je ne fais pas?
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
4 oct. 2017 à 01:18
En passant... merci! ;)
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
4 oct. 2017 à 02:02
Ne cherchez plus...
Étant donné qu'il y a seulement 6 types d'anesthésie, j'ai décidé de me créer 6 champs, et de mettre 6 cases à cocher (oui/non) dans mon formulaire. Ce ne sera pas plus long pour l'utilisateur... et pour moi, le champ « Épidurale » demeure le même dans mes requêtes, alors à bien y penser, ce sera beaucoup moins compliqué ainsi, puisque les autres types d'anesthésie ne sont pas pris en compte dans les rapports statistiques (ils ne sont là que pour info.)
Merci encore!
0