1 pièce(s) jointe(s)
Depuis un formulaire déclencher une procédure d'un autre formulaire
Bonjour à tous et à toutes,
J'ai un 1er formulaire avec un contrôle[txtNombreDepart] dans lequel je saisis une année.
J'y ai mis 2 boutons, 1 qui déclenche l'exécution d'une requête (à faire en 1er), l'autre qui ouvre un formulaire basé sur cette requête ; tout cela fonctionne parfaitement
J'ai rajouté un bouton [f paiement] pour ouvrir un autre formulaire.
Dans ce formulaire, j'ai un contrôle [txtNbrDepart] dans lequel, en fonctionnement normal, je saisis une année ; cela déclenche la procédure suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Private Sub txtNbreDepart_AfterUpdate()
Dim iNumDepart As Integer
Dim Ctl As Control
'Vérifier que le contrôle n'est pas null
If IsNull(Me.txtNbreDepart) Then Exit Sub
iNumDepart = Me.txtNbreDepart
'Aménager les contrôles
For Each Ctl In Me.Controls
If Ctl.Name Like "txtDU#" Then Ctl.ControlSource = iNumDepart + Right(Ctl.Name, 1): GoTo ctlSuivant
If Ctl.Name Like "et#" Then Ctl.Caption = (iNumDepart) + Right(Ctl.Name, 1)
If Ctl.Name Like "txtAJour#" Then
Ctl.ControlSource = "=DCount(""*"",""0_R_COTISATIONS_ADHERENTS"",""Cotisation_An=" & iNumDepart + Right(Ctl.Name, 1) & " and Cotisation_Du=0"")"
GoTo ctlSuivant
End If
If Ctl.Name Like "txtRetard#" Then
Ctl.ControlSource = "=DCount(""*"",""0_R_COTISATIONS_ADHERENTS"",""Cotisation_An=" & iNumDepart + Right(Ctl.Name, 1) & " and Cotisation_Du<>0"")"
GoTo ctlSuivant
End If
If Ctl.Name Like "txtTlDu#" Then
Ctl.ControlSource = "=DSum(""Cotisation_Du"",""0_R_COTISATIONS_ADHERENTS"",""Cotisation_An=" & iNumDepart + Right(Ctl.Name, 1) & """)"
GoTo ctlSuivant
End If
ctlSuivant:
Next Ctl
'Créer la requête source 0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES
Call MAJCotisDues_0_à_4(iNumDepart)
'L'affecter comme source
Me.RecordSource = "0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES"
Me.Recalc
Me.txtNbreDepart = iNumDepart
End Sub |
Pour le moment à ce bouton j'ai associé la macro que je joins ici (je ne sais pas comment insérer les actions d'une macro à l'intérieur d'une discussion)
Cela marche en partie puisque mon formulaire 0_Formulaire_paiement_des_cotisations s'ouvre bien et que l'année saisie dans le 1er formulaire s'affiche bien dans le contrôle [txtNbrDepart]
Par contre la procédure ne va pas plus loin, même si je fais [Entrée] sur cette valeur qui s'affiche, rien ne se passe
J'ai essayé de rajouter une autre action
[Exécuter Code] avec comme
[Nom de la fonction] Private Sub txtNbreDepart_AfterUpdate()
Cela ne fonctionne pas.
L’exécution de cette procédure peut-elle se faire automatiquement ?
Si oui quelle action utiliser ?
Merci de votre aide
A+
C15
1 pièce(s) jointe(s)
Depuis un formulaire déclencher une procédure d'un autre formulaire
Bonsoir tee_grandbois,
1 En ce qui concerne les contrôles txDU# et autres, je te joins un pdf montrant à quoi ils correspondent dan mon formulaire ; dans la 1ère colonne on a, par exemple, txDU0 et la dernière txDU4, 0 correspondant à l'année saisie, 4 à l'année saisie +4.
Ils sont effectivement incrémentés par la procédure MAJCotisDues_0_à_4(iNumDepart)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Public Sub MAJCotisDues_0_à_4(NumDebut As Integer)
Dim sSql As String
Dim q As QueryDef
sSql = "TRANSFORM Sum(T_Cotisation.Cotisation_Du) AS SommeDeCotisation_Du" _
& " SELECT[T Adhérents].Titre, [T Adhérents].N°Adherent, [T Adhérents].Nom, [T Adhérents].Prenom, Sum(T_Cotisation.Cotisation_Du) AS Total" _
& " FROM [T Adhérents] INNER JOIN T_Cotisation ON [T Adhérents].N°Adherent = T_Cotisation.T_Adherent_FK" _
& " WHERE (((T_Cotisation.Cotisation_An) Between " & NumDebut _
& " And " & NumDebut + 4 & ") AND (([T Adhérents].Adherent)=True))" _
& " GROUP BY[T Adhérents].Titre, [T Adhérents].N°Adherent, [T Adhérents].Nom, [T Adhérents].Prenom" _
& " ORDER BY[T Adhérents].Nom, [T Adhérents].Prenom" _
& " PIVOT T_Cotisation.Cotisation_An;"
Set q = CurrentDb.QueryDefs("0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES")
q.SQL = sSql
End Sub |
2 Je n'ai pas de message d'erreur, j'ai simplement un formulaire désespérément vide où seule l'année saisie dans mon 1er formulaire est affichée (voir page 2 du *pdf)
Il faudrait que je ressaisisse dans ce formulaire l'année 0 pour que tout s'affiche, c'est un peu bête...
Le premier formulaire reste visible au milieu de l'écran
3 Toute cette procédure, et beaucoup d'autres qui font marcher ma base depuis 2002, m'a été proposée par un ou plusieurs contributeurs de ce forum. J'aurais bien été incapable d'en écrire la moindre ligne.
Je ne vous remercierai jamais assez.
Si je comprends ta remarque concernant les GoTo ctlSuivant, je peux les supprimer ?
4 J'ai corrigé mon titre...
Merci de ton aide
A+
C15
Depuis un formulaire déclencher une procédure d'un autre formulaire
Bonjour
Merci de cette réponse.
Quelques remarques
1 le changement de # par *, n'a rien modifié dans le résultat : quand j'ouvre mon 0_ FORMULAIRE_PAIEMENT_DES_COTISATIONS via mon 0_FORMULAIRE_MAJ_COTIS Année 0 et suivantes, j'ai toujours mon année 0 qui s'affiche mais mon formulaire reste vide.
Il n'affiche des données que lorsque je ressaisis l'année en question (comme je l'aurais fait si j'avais ouvert ce formulaire directement)
Que faire ?
J'ai essayé d'associer la procédure à une propriété du formulaire comme sur activation ou sur ouverture ; formulaire toujours vide :(
2 j'ai rajouté une action à ma macro pour fermer le 0_FORMULAIRE_MAJ_COTIS Année 0 et suivantes ; cela marche
3 je n'ai pas trouvé le moyen de modifier l'intitulé de ma discussion, même en allant dans "examiner l'élément"
Merci de ton aide
A+
C15
1 pièce(s) jointe(s)
Depuis un formulaire déclencher une procédure d'un autre formulaire
Bonjour tee_grandbois
Ci joint une base allégée.
La procédure à suivre :
Ouvrir le formulaire 0_FORMULAIRE_MAJ_COTIS Année 0 et suivantes
Saisir l'année de départ 2016
Utiliser les boutons de ce formulaire
Créer la requête 0_R_COTISATIONS_ANNEE_0_+_4_SUIVANTES ; elle s'affiche en arrière plan avec les données des 10 adhérents
Ouvrir le formulaire 0_FORMULAIRE_SUIVI_COTISATIONS ; il s'affiche en arrière plan avec toutes les données
Ouvrir le formulaire 0_ FORMULAIRE_PAIEMENT_DES_COTISATIONS ; il s'affiche en arrière-plan avec 2016 affichée en année de départ, mais le reste est vide
le formulaire 0_FORMULAIRE_MAJ_COTIS Année 0 et suivantes est fermé
La procédure
Code:
Call MAJCotisDues_0_à_4(Me.txtNombreDepart)
se trouve dans le Module MAJCotisDues
Toute cette procédure me permettrait d'ouvrir 3 objets complémentaires en ne saisissant qu'une seule fois l'année de départ dans le formulaire 0_FORMULAIRE_MAJ_COTIS Année 0 et suivantes
Merci de ton aide
A+
C15