Signaler

Opération selon sélection dans une liste (Access) [Résolu]

Posez votre question ButteDuLac 488Messages postés jeudi 5 mars 2009Date d'inscription 4 octobre 2017 Dernière intervention - Dernière réponse le 4 oct. 2017 à 02:02 par ButteDuLac
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!

Utile
+0
plus moins
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 
ButteDuLac 488Messages postés jeudi 5 mars 2009Date d'inscription 4 octobre 2017 Dernière intervention - 4 oct. 2017 à 01:17
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?
Répondre
ButteDuLac 488Messages postés jeudi 5 mars 2009Date d'inscription 4 octobre 2017 Dernière intervention - 4 oct. 2017 à 01:18
En passant... merci! ;)
Répondre
ButteDuLac 488Messages postés jeudi 5 mars 2009Date d'inscription 4 octobre 2017 Dernière intervention - 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!
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !