|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
Bonjour à toutes et à tous,
Je travaille sur Access 2010 et voici mon souci. J’ai une table avec des noms date entrée et date de sortie etc Dans une requête j’ai des dates d’entrées : Exemple DateEntree 02/11/2010 29/07/2011 05/05/2011 07/07/2011 13/07/2011 Je souhaiterais connaître le nombre total de jours effectués entre le 01/07/2011 et 31/07/2011 Dans ma requête regroupement, deux champs DateEntree avec comme critère entre #01/07/2011# et #31/07/2011# Champ calculé : nbrejour: Somme(#31/07/2011#-[DateEntree]) J’obtiens : DateEntree nbrejour 07/07/2011 24 13/07/2011 18 29/07/2011 2 Je devrais obtenir 02/11/2010 30 29/07/2011 2 05/05/2011 30 07/07/2011 24 13/07/2011 18 Soit un total de 104 jours Pouvez-vous m’aider à résoudre ce problème. Merci à tous |
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour
Le nombre total de jour entre deux dates est donc une différence. Voilà un tuto à lire : http://mhubiche.developpez.com/vba/f...ions/datetime/ Et cette partie : http://mhubiche.developpez.com/vba/f...tetime/#LIII-D La fonction DateDiff est à voir, une recherche sur le forum avec cette fonction te donnera un nombre important de trucs et astuces. 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. |
|
|
00
|
|
|
#3 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Oui,
Je dirais comme Philippe que la fonction DateDiff est une clé du problème, mais que ce genre de problème est en général assez tordu pour un non initié
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#4 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
Bonjour,
Comme conseillé je suis allé voir sur le forum et voici mon premier essai (ce n’est pas évident effectivement pour une non initiée) Requête Champs jours: jours :VraiFaux([DateEntree]>#01/07/2011#;DiffDate("j";#01/07/2011#;[DateEntree]);DiffDate("j";[DateEntree];#01/07/2011#)) Champs jours 2 : jours2: vraiFaux([DateEntree]>#31/07/2011#;DiffDate("j";#31/07/2011#;[DateEntree]); DiffDate("j";[DateEntree];#31/07/2011#)) Champs total jours : total jours : vraiFaux([jours2]<[jours];[jours2];VraiFaux([DateEntree]<#31/07/2011#;Abs([jours2]-[jours]);[jours2])) J’obtiens : Requête1 DateEntreeCHRS jours jours2 tota2l jours 07/07/2011 6 24 18 13/07/2011 12 18 6 02/08/2011 32 0 0 05/05/2011 57 87 30 29/07/2011 28 2 2 29/08/2011 59 0 0 02/11/2010 241 271 30 06/12/2010 207 237 30 Le résultat est juste mais cela me semble bien compliqué ! Y-a-t ’il une autre méthode qui me permettrai d’obtenir directement la somme soit 116 jours. De plus si je dois modifier les dates d’intervalles ici du 1er juillet au 31 juillet et demander du 1er janvier au 31 juin obligation de venir modifier les formules. Requête paramétrée impossible dans ce cas ? Merci encore pour votre aide. |
|
|
00
|
|
|
#5 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Re,
Et tu ne te sers pas du champ DateSortie ?
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#6 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
Merci,
Je crois que je suis allé un peu vite, effectivement j'ai oublié la date de sortie. Mais est-ce que mon raisonnement est juste ? n'y a t-il pas une méthode plus rapide pour arriver à ce résultat ? Merci |
|
|
00
|
|
|
#7 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Re,
Est-ce que tu connais le VBA ? A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#8 | ||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
En gros l'idée est la suivante :
Suppose que Date1 est le 1er jour du mois et Date2 le dernier jour du mois. Alors il faut énumérer les cas possibles : Code :
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||
|
00
|
|
|
#9 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
Bonjour,
Merci beaucoup pour votre aide. Je connais un petit peu VBA sur Excel. Je pense qu'ici il faut utiliser If Then..... Je vais donc essayé et vous tiens au courant. encore merci |
|
|
00
|
|
|
#10 | ||
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
Bonjour,
Désolée de reprendre le fil seulement aujourdh'ui, mais j'ai dû faire un petit séjour à l'hopital..... Veuillez m'excuser. J'ai préparé ce bout de code comme conseillé mais je ne sais pas du tout ou le mettre. En clair je ne sais pas lancer une requête en VBA. J'ai vu la commande Docmd pour ouvrir un formulaire mais la j'avoue je sèche. voici le texte du code Code :
|
||
|
|
00
|
|
|
#11 | ||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Salut,
Procédons par étape : D'abord il te faut créer un module : Onglet "Module", puis nouveau... Puis, dans le module mettre le code de la fonction : Code :
Denis
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||
|
00
|
|
|
#12 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
tout d'abord encore merci pour ton aide
comme expliqué, j'ai copié le code dans un module de ma base. Comment utiliser cette fonction ? Merci et bonne journée |
|
|
00
|
|
|
#13 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Salut,
Dans une requête tu crées un champ calculé comme suit : Code :
Jours : Comptejours(DateSerial([Annee];[Mois];1);DateSerial([Annee];[Mois]+1;0);[DateEntree];[DateSortie]) et ta table source à 2 champs : [DateEntree] et [DateSortie]. A l'ouverture elle va te demander les 2 paramètres [Mois] et [Année], tu rentres par exemple 7 et 2011 et tu me dis ce qu'il se passe... A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#14 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
bonjour,
lorsque je lance la requête il m'est demandé de rentrer l'année le mois puis dateentrée et datesortie je rentre 2011 puis 7 pour le mois dateentree 01/01/2011 datesortie 31/07/2011 le résultat me donne Dateentree DateSortie jours 07/07/2011 12/07/2011 0 13/07/2011 28/07/2011 0 02/08/2011 0 05/05/2011 12/06/2011 0 29/07/2011 16/08/2011 0 29/08/2011 14/09/2011 0 02/11/2010 20/07/2011 0 06/12/2010 09/10/2011 0 je souhaiterais obtenir la somme des jours entre le 1er juillet et le 31 juillet Date1 et Date2 étant modifiables soit du 1er juin au 31 aout etc encore merci |
|
|
00
|
|
|
#15 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Re,
Peux-tu me donner la liste des champs de ta table source ? Merci, Sinon pour choisir Date1 et Date2, il faut mettre : Code :
Jours : Comptejours(Date1;Date2;[DateEntree];[DateSortie]) A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#16 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
voici la liste des champs de la table source et table lien
Merci T_Lien_DateEntree ID(clé primaire) IDResidant IDTypeAccueil DateEntree DateSortie IDMotifSortie TotalSéjour Table: T_Résidants IDRésidants (clé primaire IDDateEntreeCHRS Dossier_Ouvert_par DateEntretien Nom Prénom Autres Prénoms DateEntree DateSortie |
|
|
00
|
|
|
#17 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Salut,
Tu as [DateEntree] et [DateSortie] dans les 2 tables, il peut y avoir confusion... Essaie ceci : Code :
Jours : Comptejours(Date1;Date2;T_Lien_DateEntree.[DateEntree];T_Lien_DateEntree.[DateSortie])
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#18 |
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
Bonjour,
Effectivement les champs DateEntree et DateSortie ne devaient se trouver dans la table résidants Merci. Dans cette requête je ne souhaite pas renseigner la date d'entrée et la date de sortie. Je veux juste calculer le nombre de jours de présence sur une période donnée. Encore merci et bonne journée |
|
|
00
|
|
|
#19 | ||
|
Invité régulier
![]() Pascale VASNIER Inscription : avril 2010 Messages : 43 ![]() |
bonjour à toutes et à tous,
Il y a quelque temps vous m'aviez aidé pour le code d'une requête avec champs dates. Jusqu'à présent les champs dates étaient toujours remplis (à tort). Maintenant je rencontre un problème lorsque j'exécute ma requête les enregistrements qui n'ont pas de date de sortie indiquent Erreur. Voici le code : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com