Ouverture conditionnée de formulaire ACCESS

Fermé
chewinggum - 18 sept. 2007 à 14:16
 Rylobarteam - 29 mars 2008 à 19:28
Bonjour à tous:
mon problème concerne du code VB pour un bouton de compmande dans un formulaire ACCESS.

Une table T_ACT avec deux champs: ACT (texte) et DISPO (oui/non).
Un formulaire F_CHOIX avec une zone de liste (qui prend les valeurs de ACT) appelé ACTIVITES, et un bouton de commande qui doit ouvrir deux formulaires au choix.
Le premier formulaire doit s'ouvrir si DISPO = oui pour, l'autre si DISPO =non.

Comment écrire en code pour le bouton:
Sur clic, Place toi sur l'enregistrement de T_ACT où ACT=ACTIVITES spécifié dans F_CHOIX.
Si, pour cet enregistrement DISPO = oui alors ouvre F_1, si DISPO =non alors ouvre F_2.

MErci beaucoup pour l'aide que vou spourrez m'apporter
A voir également:

2 réponses

ouai peu etre que sa sa pourrait t'aider : https://cafeine.developpez.com/access/tutoriel/recherchemulti/
0
Rylobarteam
29 mars 2008 à 19:28
Je vois deux solutions à ton problème et cela dépend si ta liste de choix comporte la colonne Dispo (affiché ou pas) ou non.


Dans le premier cas (en admettant que Dispo soit la 2ème colonne de ta liste:


Dim intIndex as Integer
Dim blnDispo as Boolean
Dim intNumColonne as Integer

intIndex = Me.ACTIVITES.ListIndex 'Tu récupère le numéro de la ligne sélectionné

blnDispo = Me.ACTIVITES.Column(IntIndex,intNumColonne) 'Tu récupère la valeur de Dispo

intNumColonne = 1 'Ta valeur de dispo se trouve dans la 2ème colonne de ta liste de choix, donc : 2-1.

If blnDispo = true then
DoCmd.OpenForm "F_1"
else
DoCmd.OpenForm "F_2"
End if

Bien sur, ce code est à adapter suivant que ta valeur de Dispo est dans la 1ère ou 2ième colonne de ta liste de choix.
Il est aussi à préciser que le numéro de ligne et de colonne d'une liste de choix est numéroté à partir de 0. C'est pourquoi pour la 1ère colonne tu mettra 0, pour la deuxième 1 etc....



Deuxième cas :

Private Sub NomDu Boutton_Click()
On Error Goto TraitError

Dim Cnn as Adodb.Connection
Dim rst as Adodb.Recordset

Dim str as string
Dim strACT as string

Dim intIndex as Integer

Set Cnn = CurrentProject.Connection
Set rst = new Adodb.Recordset

intIndex = Me.ACTIVITES.ListIndex 'Tu récupère le numéro de la ligne sélectionné

strACT = Me.ACTIVITES.Column(intIndex,0)

str = "SELECT T_ACT.* FROM T_ACT WHERE ((T_ACT.ACT)=""" & strACT & """)"


rst.Open str,Cnn,adOpenDynamic,adCmdText

if Not rst.BOF then rst.MoveFirst

If rst.EOF then
Goto Fin
End Fin

If rst("DISPO") = True then

DoCmd.OpenForm "F_1"

else

DoCmd.OpenForm "F_2"

end if

Fin:

Set Cnn = Nothing
Set rst = Nothing

TraitError
MsgBox "Erreur : " & Err.Number & vbcrlf & vbcrlf & "Description : " & Err.Description
Goto Fin

End Sub
0