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 05/04/2011, 11h21   #1
Invité de passage
 
Remi L.
Inscription : mars 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Remi L.

Informations forums :
Inscription : mars 2010
Messages : 23
Points : 4
Points : 4
Par défaut Insertion automatique de dates comprises entre deux

Bonjour !

Je souhaite que vous m'aidiez sur un de mes projets access.

Voilà j'ai un formulaire où je dois saisir une date de fin et une date de début, sur ce même formulaire il y a un sous-form qui détail chaque date, ainsi je voudrais que toutes les dates comprises entre la date de début et la date de fin s'enregistrent dans ce sous formulaire (dépendant de la table détail_date).

J'ai essayé un code vba avec une incrémentation mais sa marche pas :/, quelqu'un aurait-il une solution ?

Merci beaucoup !
rere02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 16h18   #2
Membre éclairé
 
Avatar de @rkane
 
Homme Patrick
developpeur amateur dans mon cadre professionnel
Inscription : juin 2006
Messages : 499
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : developpeur amateur dans mon cadre professionnel
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 499
Points : 360
Points : 360
chuis pas sur d'avoir bien compris mais tu peu essayer un recordsource du sous formulaire du style :

Code :
1
2
3
4
form.recordsource = "select * from détail_date where " & _
"MesDates >=  Forms!MonFormPrincipal!DateMini and " & _
"MesDates <=  Forms!MonFormPrincipal!DateMaxi and " & _
"Order by.....;"
__________________

@rkane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 16h26   #3
Invité de passage
 
Remi L.
Inscription : mars 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Remi L.

Informations forums :
Inscription : mars 2010
Messages : 23
Points : 4
Points : 4
Merci @rkane, mais ca ne peut pas fonctionner

tu as par exemple:
date mini = 1/04/2011
date maxi = 4/04/2011

et je veux que dans le champ date de ma table détail_date s'inscrive :

1/04/2011
2/04/2011
3/04/2011
4/04/2011

j'ai essayer de faire une boucle du style For i = date_mini to date_maxi

mais ca foire :-/
rere02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 16h29   #4
Membre éclairé
 
Avatar de @rkane
 
Homme Patrick
developpeur amateur dans mon cadre professionnel
Inscription : juin 2006
Messages : 499
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : developpeur amateur dans mon cadre professionnel
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 499
Points : 360
Points : 360
pas compris le problème alors , désolé

mais si tu nous mettais un fichier en test ce serait plus facile....

Citation:
Excuses aux modos pour les 2 messages plus haut, inutiles car mal rédigés et enregistrés par mauvaise manip
__________________

@rkane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 19h05   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Voici un petit exemple

Une table (LaTable) et un champ (dteDate)

Dans cet exemple j'utilise un recordset Création et manipulation des données avec DAO (ne pas oublier la référence DAO 3.6) et j'affecte les dates moi même.

J'aurais donc dans la table :

01/04/2011
02/04/2011
03/04/2011
04/04/2011

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
Public Sub AjoutDate()
 
    ' déclaration
    Dim dteDebut As Date
    Dim dteFin As Date
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim intNbrJour As Integer
    Dim i As Integer
 
    ' affectation
    strSql = "SELECT dteDate FROM LaTable;"
    dteDebut = "01/04/2011"
    dteFin = "04/04/2011"
 
    ' calcul du nombre de jour entre les deux dates
    intNbrJour = DateDiff("d", dteDebut, dteFin)
 
 
    ' incrémentation
    For i = 0 To intNbrJour
        Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
        rst.AddNew
        rst("dteDate").Value = DateAdd("d", i, dteDebut)
        rst.Update
    Next i
 
    rst.Close
    Set rst = Nothing
 
End Sub
Bien sûr le tout est adapter à ton cas, c'est le principe (un des principe, car il y en a d'autres).

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 07h37   #6
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
Il faut créer une fonction qui sur les evenements Change des 2 zônes de saisie remplissent une table qui est la source du sous-formulaire. Cette table sera vidée puis remplie des valeurs de Date mini à Date Maxi puis le sous-formulaire sera rafraichi.
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 10h50   #7
Invité de passage
 
Remi L.
Inscription : mars 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Remi L.

Informations forums :
Inscription : mars 2010
Messages : 23
Points : 4
Points : 4
Bonjour !

Merci à tous pour votre aide, mais ca ne marche toujours pas.

Philippe j'ai essayé votre code et ca bug au niveau de l'instruction sql...

Voici mon fichier test que vous pouvez télécharger sur l'adresse suivante :
http://www.2shared.com/file/UXSttHIu/TEST.html

J'ai lié le code sur le bouton qui est sur le formulaire.

Merci !
rere02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 19h55   #8
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Citation:
Envoyé par rere02 Voir le message
Philippe j'ai essayé votre code et ca bug au niveau de l'instruction sql...
Ce code fonctionne correctement, mais qu'est-ce qui bug ? Message d'erreur ?

As-tu adapté ce code à ta situation, est-ce que l'on peut le voir ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h23   #9
Invité de passage
 
Remi L.
Inscription : mars 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Remi L.

Informations forums :
Inscription : mars 2010
Messages : 23
Points : 4
Points : 4
Bonjour !

Voici le code que j'ai adapté Philippe :

La table : detail_date(N°, Date, Heures_travaillees)

Les zones de texte du formulaire : dteDebut, dteFin, Heures (+ le bouton qui ordonne l'exécution du script)

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
Private Sub Commande0_Click()
 
    ' déclaration
    Dim dteDebut As Date
    Dim dteFin As Date
    Dim rst As DAO.Recordset
    Dim strSql As String
    Dim intNbrJour As Integer
    Dim i As Integer
 
    ' affectation
    strSql = "SELECT Date FROM detail_date;"
    dteDebut = Me.date_debut
    dteFin = Me.date_fin
 
    ' calcul du nombre de jour entre les deux dates
    intNbrJour = DateDiff("d", dteDebut, dteFin)
 
 
    ' incrémentation
    For i = 0 To intNbrJour
        Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
        rst.AddNew
        rst("Date").Value = DateAdd("d", i, dteDebut)
        rst.Update
    Next i
 
    rst.Close
    Set rst = Nothing
 
End Sub
Et donc, quand je mets en route le script j'ai un message d'erreur d'exécution 94 - Utilisation incorrecte de Null

Merci !
rere02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 18h31   #10
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Dans un premier temps change le nom de champ Date, c'est une fonction VB et cela passe très mal, c'est un mot réservé.

Sur quel ligne ce code se produit ?
Le champ N° est-il un numéro auto ?


Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 09h57   #11
Invité de passage
 
Remi L.
Inscription : mars 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Remi L.

Informations forums :
Inscription : mars 2010
Messages : 23
Points : 4
Points : 4
Re !

Citation:
Dans un premier temps change le nom de champ Date
Waaaaaaah ! C'était ca ! J'ai changé le nom du champ date et magie ca marche ! Mille mercis Philiipe !!
rere02 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 05h29.


 
 
 
 
Partenaires

Hébergement Web