Groupe d'option selon autre champ

Résolu
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   -  
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention   40
 
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