Groupe d'option selon autre champ

Résolu/Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 30 janv. 2017 à 16:24
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 30 janv. 2017 à 18:17
Bonjour,

J'ai une base de données contenant des numéros de salle : champ [N°_salle], pour lequel les valeurs possibles sont : 3306; 3306-3307; 3582; 3582-3583; 3583; 3585; A-002;... (les autres valeurs n'ont pas d'impact sur la suite.)

À ces salles (celles nommées ci-dessus) sont associées un numéro d'équipement (adresse IP).

Dans un formulaire, qui sera pour impression seulement, je voudrais que l'adresse IP soit indiquée, en fonction du numéro de salle, uniquement s'il s'agit d'une visioconférence.

J'ai créé un groupe d'options contenant 3 options (chaque adresse IP) ayant les valeurs associées 1, 2 et 3.

Puis, j'ai voulu créer un code VBA pour que s'il s'agit d'une visioconférence, alors l'une des cases d'option soit cochée, selon le numéro de salle.

En résumé, voici à quoi équivaut chaque option :

3306 = 1
3306-3307 = 1
3582 = 2
3582-3583 = 2
3583 = 3
3585 = 3
A-002 = 3


Mon code semblait fonctionner, mais sur les 13 enregistrements que j'ai actuellement, ça ne fonctionne que pour les deux derniers. De plus une fois qu'une option est cochée, si je reviens à l'enregistrement précédent (soit le 11e, la case reste cochée, et ne se décoche qu'au 9e enregistrement... puis en refaisant le chemin inverse, au 12e enregistrement, la bonne case se coche, et au 13e, elle change pour se cocher à la bonne place aussi...)

Je vous soumets mon code, au cas où vous auriez une brillante idée pour m'aider... c'est peut-être dans l'ordre où je présente mes ElseIf... ou bien il me manque une ligne quelque part... mais comme je suis plutôt novice en VBA, je ne trouve pas quoi...

Merci à l'avance!!!

Option Compare Database
Private Sub Form_Current()
If Type_formation = "Visioconférence" Then

If Me.N°_salle.Value Like "3306" Then
Me.opgIP.Value = 1

ElseIf Me.N°_salle.Value Like "3582" Then
Me.opgIP.Value = 2

ElseIf Me.N°_salle.Value Like "3585" Then
Me.opgIP.Value = 3

ElseIf Me.N°_salle.Value = "3583" Then
Me.opgIP.Value = 3

ElseIf Me.N°_salle.Value Like "A-002" Then
Me.opgIP.Value = 3

End If

Else: Me.opgIP.Value = Null

End If

End Sub
A voir également:

1 réponse

yg_be Messages postés 22916 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 juillet 2024 1 481
30 janv. 2017 à 17:46
bonjour, je pense que ton code doit parcourir les enregistrements présents dans le formulaire, pas simplement travailler sur l'enregistrement courant ("Me").
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
30 janv. 2017 à 18:17
Merci!

J'ai modifié ainsi :

Option Compare Database
Private Sub Form_current()

If Me.N°_salle.Value = "3306" Then
Me.opgIP.Value = 1

ElseIf Me.N°_salle.Value = "3306-3307" Then
Me.opgIP.Value = 1

ElseIf Me.N°_salle.Value = "3582" Then
Me.opgIP.Value = 2

ElseIf Me.N°_salle.Value = "3582-3583" Then
Me.opgIP.Value = 2

ElseIf Me.N°_salle.Value = "3585" Then
Me.opgIP.Value = 3

ElseIf Me.N°_salle.Value = "3583" Then
Me.opgIP.Value = 3

ElseIf Me.N°_salle.Value = "A-002" Then
Me.opgIP.Value = 3

Else: Me.opgIP.Value = Null

End If

End Sub


C'est un peu plus long, mais il semble que « Like » ne tenait pas compte des salles doubles (ex. : 3306-3307), et j'ai enlevé le If Me.Type_formation = "Visioconférence", et à la place, j'ai mis une requête en source du formulaire, qui ne prend que les formations en type visioconférence.
0