Re: Formulaires
El Bero a dit:
Re bonjour,
Vous allez me prendre pour un :shock: lourdau :?: :lol: , mais j'ai suivi vos conseils (encore merci) mais lorsque je veux réaliser mon formulaire sur base
de la table "animer" je n'ai que les champs num_animation, num_activite,num_formateur et date.
Je dois pouvoir encoder un nouveau formateur en meme temps qu'une nouvelle activité et de pouvoir encoder plusieurs dates pour celle-ci.
J'aimerai avoir les coordonnées du formateur, les coordonnées de l'activité ainsi que la possibilité d'encoder des dates.
Merci milles fois et excusez moi d'etre insistant de la sorte mais je tourne en rond depuis pas mal de temps, mais grace à vous, je progresse...
Merci
El Bero de Belgique
Pas de panique,
Il faut dans ce cas créer un requête multiple avec les tables Activité, Formateur et Animer.
Dans la grille d'interrogation, tu insères dans l'ordre qui suit :
-> num_animation et num_activité# (table Animer)
-> type jusqu'à animation (table (Activité)
-> num_formateur# (table Animer)
-> prénom jusqu'à courriel (table Formateur)
Tu crées ton formulaire à partir de cette requête.
Maintenant concernant la problématique de vouloir "encoder" une nouvelle activité ou nouveau formateur, rien de plus simple, il faut VBA.
Dans ton formulaire
Animer, en mode création, tu ouvres la fenêtre des propriétés de la zone de liste
num_activité#, tu vas sur l'évènement
absence de liste et tu choisis
générateur de code et tu insères le code suivant :
Private Sub num_activité__NotInList(NewData As String, Response As Integer)
If MsgBox("Voulez-vous ajouter la valeur " & NewData & " ?", _
vbYesNo + vbQuestion) = vbYes Then
CurrentDb.Execute "INSERT INTO activités(designation) " _
& "SELECT """ & NewData & """ ;"
Response = acDataErrAdded
Else
Response = acDataErrContinue
Cancel = True
End If
End Sub
ensuite, même technique pour la zone de liste
num_formateur# et tu insères le code suivant :
Private Sub num_formateur__NotInList(NewData As String, Response As Integer)
If MsgBox("Voulez-vous ajouter la valeur " & NewData & " ?", _
vbYesNo + vbQuestion) = vbYes Then
CurrentDb.Execute "INSERT INTO formateurs(nom) " _
& "SELECT """ & NewData & """ ;"
Response = acDataErrAdded
Else
Response = acDataErrContinue
Cancel = True
End If
End Sub
Ces 2 codes vont te permettre de saisir une nouvelle valeur dans la zone de liste considérée avec confirmation d'ajout de la nouvelle valeur et te permettra aussi de saisir des valeurs dans les zones de texte liées à la zone de liste considérée.
Pour info et concernant le code :
Private Sub
num_formateur_ -> num_formateur_ = num_formateur# (nom de ta zone de liste).
Le symbole
# n'est pas reconnu par VBA et est remplacé automatiquement par
_
CurrentDb.Execute "INSERT INTO
formateurs(nom)
formateurs = nom de la table dans laquelle l'ajout se fait
(nom) = nom du champ à partir duquel on procède à l'ajout
Alors attention, si tu changes nom de table ou nom de champ, penser à modifier aussi le code. :mrgreen:
@+