Ouvrir etat pour une semaine donnee a partir d'une date entree form

Ouvrir etat pour une semaine donnee a partir d'une date entree form - VB/VBA/VBS - Programmation

Marsh Posté le 25-10-2006 à 05:22:52    

Salut a tous :hello:  
 
J'ai un petit problème: j'ai un état où des transactions sont affichées que j’ai regroupé par numéro semaine dans ma requête. J’ai créé un formulaire où l’utilisateur rendre n’importe quel jour (sous le format :MM/JJ-AAAA) et ça doit ouvrir l’état pour la semaine contenant ce jour. Mais mon code VBA pour faire ne marche par vraiment :
 
    Dim stDocName As String
    Dim semaine As String
    semaine = DatePart(ww, Me!date_entree)
     
    stDocName = "transaction_semaine"
    DoCmd.OpenReport stDocName, acPreview, ,_
    "[semaine] =" & "'" & semaine  & "'"
 
Je dois m’y prendre mal quelque part car ça m’affiche «  Invalid procedure call or argument ».
 
De plus j’aimerais que dans mon état ça pour afficher la date du premier jour (lundi) et du dernier jour (vendredi) de la semaine pour laquelle on imprime l’etat. Est-ce possible ?
 
Merci d'avance :jap:  

Reply

Marsh Posté le 25-10-2006 à 05:22:52   

Reply

Marsh Posté le 25-10-2006 à 07:23:56    

Bonjour,
si les lignes sont exactement celles que tu as dans ton code, mets un espace entre la ,   et le  _   , ou plus simple : mets tout sur une ligne. Si c'est une refrappe, essayes plutôt des copier/coller cela évite les erreus de transcription.
 
mettre "ww" dans le datepart :  interval = expression CHAINE
 
 
pour l'affichage: regarder si l'utilisation de:
dada=cdate( Me!date_entree)   'si nécessaire
 wd = Weekday(Dada, 3)
    MsgBox (Dada - wd) & " " &  (Dada - wd + 4)
 
est correcte (tester sur les cas "limite" )
Cordialement


Message édité par seniorpapou le 25-10-2006 à 09:00:12
Reply

Marsh Posté le 25-10-2006 à 09:07:32    

ca marche bien avec le datepart(), merci seniorpapou.
Au fait concernant ma 2e question, ce que je cherche a faire, c'est a partir d'une date rentree dans un formulaire, j'aimerais pourvoir afficher dans 2 text box dans un etat, la date du debut(lundi) et fin(vendredi) de semaine dans la laquelle la date est comprise. je m'explique:
par ex si l'utisateur rentre dans le formulaire la date de n'importe quelle jour de la semaine qu'il veut, disons il rentre la date de mercredi passe (donc 10/18/2006) j'aimerais que dans l'etat, ca m'affiche:
text_box1= 10/16/2006 et textbox2 =10/23/2006. Est ce faisable?
Ou bien est ce que c'est plus facile en prenant dimanche et samedi comme debut et fin de semaine?
 
Merci

Reply

Marsh Posté le 25-10-2006 à 09:54:31    

bonjour,
à tester en mettant la bonne variable date
 
pour le lundi:
=CDate("18/10/2006" )-JourSem(CDate("18/10/2006" ))+2
 
pour le vendredi
=CDate("18/10/2006" )-JourSem(CDate("18/10/2006" ))+6
il y a surement un autre moyen mais je ne trouve pas
Cordialement
 
Hs: pour mon information tu n'as pas dit à Beegee sur la section sgbd si sa solution fonctionnait au sujet des GOOD ....


Message édité par seniorpapou le 25-10-2006 à 09:59:25
Reply

Marsh Posté le 30-10-2006 à 02:29:17    

Salut seniorpapou,
 
Desolees de te repondre aussi tard, mais je viens tout juste d'essayer la requete de Beegee et ca marche tres bien
 
cordialement,
 
P.S: pour resoudre mon probleme de date. j'ai fait comme suit:
 
pour avoir le lundi, j'ai une fonction qui me revoie le lundi:
 
Public Function PremierJourSemaine(ByVal numSemaine As Byte, ByVal annee As Integer) As Date
 
    Dim d As Date
    Dim numS As Integer
   
    ' premier jour de l'année
    d = DateSerial(annee, 1, 1)
   
    ' numéro de la semaine du 1er janvier
    numS = DatePart("ww", d, vbMonday, vbFirstFourDays)
   
    ' si le 1er janvier fait partie de la dernière semaine de l'année précédente
    ' alors passe à la semaine suivante (la première de la nouvelle année)
    If numS <> 1 Then d = DateAdd("d", 7, d)
   
    ' calcule le premier jour de la première semaine de l'année
    d = DateAdd("d", 1 - Weekday(d, vbMonday), d)
           
    ' ajoute (numSemaine-1) semaines
    PremierJourSemaine = DateAdd("ww", numSemaine - 1, d)
    Me!date1 = PremierJourSemaine
End Function
 
et le vendredi m'est donne avec le code suivant:
 
Public Function DernierJourSemaine(ByVal numSemaine As Byte, ByVal annee As Integer) As Date
 
    Dim d As Date
    Dim numS As Integer
   
    ' premier jour de l'année
    d = DateSerial(annee, 1, 1)
   
    ' numéro de la semaine du 1er janvier
    numS = DatePart("ww", d, vbMonday, vbFirstFourDays)
   
    ' si le 1er janvier fait partie de la dernière semaine de l'année précédente
    ' alors passe à la semaine suivante (la première de la nouvelle année)
    If numS <> 1 Then d = DateAdd("d", 7, d)
   
    ' calcule le premier jour de la première semaine de l'année
    d = DateAdd("d", 5 - Weekday(d, vbMonday), d)
           
    ' ajoute (numSemaine-1) semaines
    DernierJourSemaine = DateAdd("ww", numSemaine - 1, d)
    Me!date2 = DernierJourSemaine
End Function

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed