Bonjour, je débute encore ...
J'ai une fonction publique :
Le but est de retourner une valeur A,B,C ou D en fonction du type de semaine indiqué dans une table par rapport au numéro de semaine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Function TypeSemaineDate(dt As Date) As String Dim j As Long Dim dt1 As Date Dim db As DAO.Database Dim rsPTS As DAO.Recordset Set db = CurrentDb Set rsPTS = db.OpenRecordset("select * from T_ParamTypeSemaine INNER JOIN T_MagasinCourant ON T_ParamTypeSemaine.Magasin=[T_MagasinCourant].[Magasin] ;") dt1 = dt - Weekday(dt, vbMonday) + 1 j = NumSemaine(dt1) MsgBox j ' pour test TypeSemaineDate = rsPTS.Fields("Semaine" & j) MsgBox TypeSemaineDate ' pour test End Function
Cette fonction donne bien le résultat escompté .
Dans le planning semaine, composé d'un formulaire [F_PlanningSemaine] et d'un sous formulaire [SF_PlanningSemaine] Je souhaite afficher dans le sous formulaire la valeur de ma fonction TypeSemaineDate, en fonction de la date de la semaine affichée à l'ecran.
Pour ce faire , j'ai créé une zone de texte dans mon sous formulaire appelée "TypeSemaine"
Dans le code du sous formulaire en open, j'ai mis :
Le résultat est celui attendu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Form_Open(Cancel As Integer) Me.TypeSemaine = TypeSemaineDate(Nz(Forms!F_PlanningSemaine.DateD, 0))
Le souci est qu'une fois le planning hebdomadaire ouvert, si je change de semaine, ma zone de texte "TypeSemaine" ne se met pas à jour.
Pour changer de semaine je clique sur le bouton CmdSuivant ce qui déclenche le code:
dans la fonction MajPlanningSemaine j'ai ajouté du code pour que la valeur TypeSemaine soit mise à jour:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub CmdSuivant_Click() Me.DateD.Value = CDate(Me.DateD.Value) + 7 MajPlanningSemaine End Sub
J'obtiens bien la valeur escomptée dans ma msgbox, mais ma zone de texte ne se met pas à jour..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Public Sub MajPlanningSemaine() Dim j As Integer, i As Long, k As Long Dim DateJ As Date, NS As Long, nbC As Long, nbA As Long, nbP As Long, TypeSemaine As String ' pour test DateJ = CDate(Forms!F_PlanningSemaine!DateD) TypeSemaine = TypeSemaineDate(Nz(DateJ, 0)) ' pour test MsgBox TypeSemaine 'pour test
Je suppose que la solution doit être toute bête mais j'ai beau me creuser la tête je ne vois pas..
Merci d'avoir lu jusque là et pour votre aide aussi
Partager