Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/09/2011, 15h54   #1
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Par défaut Calcul de date automatique

Bonjour,

Pour le besoin d'une application Access, j'aimerai avoir une table ayant le format suivant:

Date
01/01/2012

Numéro de jour dans la semaine
7 (car c'est un dimanche)

J'aimerai faire une fonction qui remplisse cette table pour un an, mais ne connaissant pas Access et VBA je ne sais pas par ou commencer.

Merci d'avance pour votre aide.
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 16h43   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 655
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 655
Points : 6 220
Points : 6 220
Envoyer un message via MSN à argyronet
Bonjour,

Bien imaginons une table nommée TBLDates avec 2 champs nommés LaDate, LaSemaine respectivement pour la date et le N° de semaine...
Tu poses un module dans lequel tu colles ce bout de code
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Sub RemplirTable()
Dim dtmDateDebut                                       As Date
Dim dtmDateFin                                         As Date
Dim dtmTempDate                                        As Date
Dim strTemp                                            As String
Dim lngDayInterval                                     As Long
Dim intNoSem                                           As Integer
Dim SQLOperation                                       As String
Dim oDB                                                As DAO.Database
    On Error GoTo L_ErrRemplirTable
 
    If MsgBox("On efface la table d'abord ?", 1) = 2 Then Exit Sub
 
    strTemp = InputBox("Date de début :", "Date", DateSerial(Year(Now), 1, 1))
    If IsDate(strTemp) Then
        dtmDateDebut = CDate(strTemp)
    Else: Err.Raise 13
    End If
    strTemp = InputBox("Date de fin :", "Date", DateSerial(Year(Now) + 1, 12, 31))
    If IsDate(strTemp) Then
        dtmDateFin = CDate(strTemp)
    Else: Err.Raise 13
    End If
    lngDayInterval = dtmDateFin - dtmDateDebut
 
    Set oDB = CurrentDb
    SQLOperation = "DELETE * FROM TBLDates;"
    oDB.Execute SQLOperation, dbFailOnError
    dtmTempDate = dtmDateDebut
    intNoSem = DatePart("ww", dtmTempDate)
    Do
        If dtmTempDate > dtmDateFin Then
            Exit Do
        End If
        SQLOperation = "INSERT INTO TBLDates (LaDate, LaSemaine) VALUES(#" & Format(dtmTempDate, "m/d/yyyy") & "#, " & intNoSem & ");"
        oDB.Execute SQLOperation, dbFailOnError
        dtmTempDate = dtmTempDate + 1
        intNoSem = DatePart("ww", dtmTempDate)
    Loop
    If Not oDB Is Nothing Then oDB.Close
    MsgBox "C'est OK !", , "Fin"
    On Error GoTo 0
L_ExRemplirTable:
    Set oDB = Nothing
    Exit Sub
 
L_ErrRemplirTable:
    MsgBox Err.Description, 48, "Bah alors !"
    Resume L_ExRemplirTable
End Sub
et tu appuies sur la touche F5.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/09/2011, 17h02   #3
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
Je jour de la semaine n'a pas à être dans dans la table puisque tu peux le déduire de la date. La fonction WeekDay(), regarde l'aide pour les paramètres.

Pour créer une année complète :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private sub CreerAnnee()
    'Complète une annee avec tous les dimanches.
    dim dateCourante as date:dateCourante=DateSerial(2012, 01, 01)
    dim db as dao.database:set db=currentdb
    dim r as dao.recordset:set r=db.openrecorset("nomTaTable")
 
    do while dateCourante<=dateserial(2012,12,31)
       r.addnew
       r![DateCourante]=dateCourante 'Attention ne pas nommer un champ Date cela perturbe parfois Access qui ne sait plus si c'est un champ ou la fonction Date()
       r.update
       dateCourrante=DateAdd("d",7,dateCourante) 'Ajoute 7 jours à la date courante
     loop
 
     r.close:set r=nothing 'Ferme et libère la mémoire
     set db=nothing 'Libère la mémoire
end sub
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/09/2011, 17h49   #4
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
OUaou, ça c'est de la réponse.

Merci beaucoup pour votre aide.
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h20.


 
 
 
 
Partenaires

Hébergement Web