[ACCESS] Statisque simple sur l'âge
Hiwiiiii
-
Christounet Messages postés 1266 Statut Membre -
Christounet Messages postés 1266 Statut Membre -
Bonjour,
je cherche à faire apparaître 3 simples statistique sur mon formulaire Access,
j'ai donc une table PERSONNE, avec dedans plusieurs enregistrement, j'ai un champ où est stocké la date de naissance de ces personnes (format jj/mm/aa)
dans mon formulaire, j'affiche le nombre total de personne dans la table (ça c'est ok)
je voudrais aussi ajouter ¤ le nombre de personne qui ont moins de 26ans
¤ le nombre de personne ayant entre 27 et 49ans
¤ le nombre de personne ayant plus de 50ans
(à afficher dans des zones texte classique)
Il faudrait donc soustraire la date de naissance avec la date d'aujourd'hui pour obtenir l'âge et ensuite l'attribuer à telle ou telle catégorie et la je nage complètement !
Merci pour vos réponses
je cherche à faire apparaître 3 simples statistique sur mon formulaire Access,
j'ai donc une table PERSONNE, avec dedans plusieurs enregistrement, j'ai un champ où est stocké la date de naissance de ces personnes (format jj/mm/aa)
dans mon formulaire, j'affiche le nombre total de personne dans la table (ça c'est ok)
je voudrais aussi ajouter ¤ le nombre de personne qui ont moins de 26ans
¤ le nombre de personne ayant entre 27 et 49ans
¤ le nombre de personne ayant plus de 50ans
(à afficher dans des zones texte classique)
Il faudrait donc soustraire la date de naissance avec la date d'aujourd'hui pour obtenir l'âge et ensuite l'attribuer à telle ou telle catégorie et la je nage complètement !
Merci pour vos réponses
A voir également:
- [ACCESS] Statisque simple sur l'âge
- Iphone 14 simple - Guide
- Simple pdf - Télécharger - PDF
- Simple ocr - Télécharger - Bureautique
- Vampire diaries age - Forum Cinéma / Télé
- Simple file locker - Télécharger - Sécurité
21 réponses
Bonjour,
Pour calculer l'age tu peux utiliser le code suivant
Tu trouveras d'autres informations sur le site suivant
A plus
Pour calculer l'age tu peux utiliser le code suivant
ENT(DIFFDATE("j"; [datenaissance]; NOW( )) / 365.25)
Tu trouveras d'autres informations sur le site suivant
A plus
Désolé je n'avais pas vu votre réponse !!
ça à l'air d'être ce qu'il faut je vais essayer de la faire marcher.
Merci je vous tiens au courant.
ça à l'air d'être ce qu'il faut je vais essayer de la faire marcher.
Merci je vous tiens au courant.
On est obliger de l'utiliser dans une requête peut-être ??? Moi ça m'arrangerais de pouvoir le mettre directement dans le source contrôle d'une zone texte.
Je regardes, je regardes
Je regardes, je regardes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon le premier truc ça marche, cad que j'arrive à avoir l'age en fonction de la date de naissance dans une zone texte :
=DiffDate("aaaa";[TDE_naiss];Maintenant())
maintenant il faut que j'arrive à les comptabiliser dans telle ou telle catégorie, mais pour faire ça je suis obligé de créer un champ dédié, non ?
A+
=DiffDate("aaaa";[TDE_naiss];Maintenant())
maintenant il faut que j'arrive à les comptabiliser dans telle ou telle catégorie, mais pour faire ça je suis obligé de créer un champ dédié, non ?
A+
Bonjour,
Tu peux utiliser l'ordre SQL suivant
Tu auras comme résultat 3 lignes contenant le nombre de personnes <26 , >25 et < 50 , > 49
Tu peux aussi rajouter une colonne dans ta table qui contient la valeur suivante 1 si age < 26, 2 si age entre 26 et 49, 3 si age > 49 et le code sera alors
Je pense que cela devrait faire ce que tu cherches
A plus
Tu peux utiliser l'ordre SQL suivant
select count(*) from nomdetatable
where DiffDate("aaaa";[TDE_naiss];Maintenant()) < 26
union
select count(*) from nomdetatable
where DiffDate("aaaa";[TDE_naiss];Maintenant()) between 26 and 49
union
select count(*) from nomdetatable
where DiffDate("aaaa";[TDE_naiss];Maintenant()) > 49
Tu auras comme résultat 3 lignes contenant le nombre de personnes <26 , >25 et < 50 , > 49
Tu peux aussi rajouter une colonne dans ta table qui contient la valeur suivante 1 si age < 26, 2 si age entre 26 et 49, 3 si age > 49 et le code sera alors
select nouvellecolonne , count(*) from nomdetatable group by nouvellecolonne
Je pense que cela devrait faire ce que tu cherches
A plus
Merci de votre réponse, je n'avais pas pensé au SQL, je parle que votre synthaxe est bonne mais je ne sais pas comment utiliser ce code sous ACCESS, désolé mais j'ai appris le SQL sur un terminal Unix et la je suis perdu lol
Si vous pouvez m'en dire encore un peu plus, vraiment désolé pour toutes ces questions.
A+
Si vous pouvez m'en dire encore un peu plus, vraiment désolé pour toutes ces questions.
A+
Bonjour,
Peux-tu me dire comment tu obtiens le nombre total de personnes dans ton formulaire ?
A plus
Peux-tu me dire comment tu obtiens le nombre total de personnes dans ton formulaire ?
A plus
Salut,
alors pour tout ce qui est comptage "simple", j'utilise une fonction que l'on m'a conseillé sur le forum :
=CpteDom("TDE_id";"TDE")
TDE=table demandeur emploi
je ne passe pas par le SQL, je met ça : clique droit>Donnée>Source contrôle.
A+ merci
Comme je l'ai dit ton code doit faire ce que je veux mais je ne sais pas comment l'utiliser :s
alors pour tout ce qui est comptage "simple", j'utilise une fonction que l'on m'a conseillé sur le forum :
=CpteDom("TDE_id";"TDE")
TDE=table demandeur emploi
je ne passe pas par le SQL, je met ça : clique droit>Donnée>Source contrôle.
A+ merci
Comme je l'ai dit ton code doit faire ce que je veux mais je ne sais pas comment l'utiliser :s
Bonjour,
Tu dois d'abord crée 3 requêtes et les sauver chacune avec un nom différent
Requête 1
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) < 26
Requête 2
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) between 26 and 49
Requête 3
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) > 49
Ensuite tu rajoutes trois champs dans ton formulaire
Ensuite tu rajoutes le code suivant en ouvrant les propriétés de ton formulaire et cliquant sur l'événement onload (j'ai Access en anglais)
J'espère que cela pourra t'aider.
A plus
Tu dois d'abord crée 3 requêtes et les sauver chacune avec un nom différent
Requête 1
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) < 26
Requête 2
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) between 26 and 49
Requête 3
Comme colonne --> Expr1: Count(*)
Comme critère --> datediff('aaaa',[TDE.datedenaissance],maintenant()) > 49
Ensuite tu rajoutes trois champs dans ton formulaire
Ensuite tu rajoutes le code suivant en ouvrant les propriétés de ton formulaire et cliquant sur l'événement onload (j'ai Access en anglais)
Dim db As Database ' Pointeur pour la base courante
Dim rst As Recordset ' Pointeur pour le recorset devant contenir le résultat de la recherche
Set db = CurrentDb ' On pointe sur la base courante
Set rst = db.OpenRecordset("nomdetarequête1") 'On défini la requete
rst.MoveFirst ' On pointe sur le premier élément trouvé
While Not (rst.EOF) ' On passe en revue tous les enregistrement tant qu'il y en a
nomchamp1.Value = rst!Expr1 ' On affiche la valeur du champ voulu de l'enregistrement courant
rst.MoveNext ' On passe à l'enregistrement suivant
Wend ' on va au début de la boucle
rst.Close ' Fermeture du recordset
Set rst = db.OpenRecordset("nomdetarequête2") 'On défini la requete
rst.MoveFirst ' On pointe sur le premier élément trouvé
While Not (rst.EOF) ' On passe en revue tous les enregistrement tant qu'il y en a
nomchamp2.Value = rst!Expr1 ' On affiche la valeur du champ voulu de l'enregistrement courant
rst.MoveNext ' On passe à l'enregistrement suivant
Wend ' on va au début de la boucle
rst.Close ' Fermeture du recordset
Set rst = db.OpenRecordset("nomdetarequête3") 'On défini la requete
rst.MoveFirst ' On pointe sur le premier élément trouvé
While Not (rst.EOF) ' On passe en revue tous les enregistrement tant qu'il y en a
nomchamp3.Value = rst!Expr1 ' On affiche la valeur du champ voulu de l'enregistrement courant
rst.MoveNext ' On passe à l'enregistrement suivant
Wend ' on va au début de la boucle
rst.Close ' Fermeture du recordset
J'espère que cela pourra t'aider.
A plus
Waa tout ça pour ça lol.
Merci pour ta raison bien développé j'y travail.
Pour l'instant :
la syntaxe n'est pas bonne et l'expression "Expr1: Count(*) " je ne sais pas où elle va lol
Comme tu es en anglais je vais te donné ce que j'ai comme "champ" :
Champ: TDE_naiss
Table: TDE
Tri:
Afficher:
Critères:
Ou:
En tout cas merci je cherche
Merci pour ta raison bien développé j'y travail.
Pour l'instant :
la syntaxe n'est pas bonne et l'expression "Expr1: Count(*) " je ne sais pas où elle va lol
Comme tu es en anglais je vais te donné ce que j'ai comme "champ" :
Champ: TDE_naiss
Table: TDE
Tri:
Afficher:
Critères:
Ou:
En tout cas merci je cherche
Bonjour,
Dans Champ, tu tapes tout simplement Count(*) et Access va rajouté Expr1 devant une fois la requête sauvée.
Dans critères tu tapes DiffDate('aaaa',[TDE.datedenaissance],Maintenant()) < 26
Concernant la fonction Datediff , c'est celle en anglais, en français c'est comme tu l'as indiqué DiffDate, désolé pour cela.
A plus
Dans Champ, tu tapes tout simplement Count(*) et Access va rajouté Expr1 devant une fois la requête sauvée.
Dans critères tu tapes DiffDate('aaaa',[TDE.datedenaissance],Maintenant()) < 26
Concernant la fonction Datediff , c'est celle en anglais, en français c'est comme tu l'as indiqué DiffDate, désolé pour cela.
A plus
J'ai essayé de voir avec ce site :
https://www.techonthenet.com/access/functions/date/datediff.php
J'ai essayé de le présenté différemment mais ça ne marche pas.
Lorsque j'essaye de sortir du champ, j'ai un message erreur de syntaxe, si je choisis ok je reviens et si je fais aide, le volet s'ouvre mais reste vide.
de plus le curseur se replace au niveau de la première virgule, cela signifie que le problème vient de la ?
Expr1 : datediff('yyyy',[TDE_naiss],maintenant())
j'ai essayé avec des guillemets, avec aaaa mais ça ne fonctionne toujours pas.
https://www.techonthenet.com/access/functions/date/datediff.php
J'ai essayé de le présenté différemment mais ça ne marche pas.
Lorsque j'essaye de sortir du champ, j'ai un message erreur de syntaxe, si je choisis ok je reviens et si je fais aide, le volet s'ouvre mais reste vide.
de plus le curseur se replace au niveau de la première virgule, cela signifie que le problème vient de la ?
Expr1 : datediff('yyyy',[TDE_naiss],maintenant())
j'ai essayé avec des guillemets, avec aaaa mais ça ne fonctionne toujours pas.
Voila la syntaxe qui fonctionne chez moi !!!!
Expr1 : DiffDate("aaaa";[TDE_naiss];Maintenant())<26
Cela retourne -1 sir c'est effectivement inférieur à 26 et 0 dans les autres cas.
Expr1 : DiffDate("aaaa";[TDE_naiss];Maintenant())<26
Cela retourne -1 sir c'est effectivement inférieur à 26 et 0 dans les autres cas.
Bahh pour que l'âge ne soit pas obsolète l'année prochaine, après c'est vrai qu'il est peut-être possible d'augmenter de 1 tous les ans je ne sais pas...
mais la j'ai besoin des date exact donc de la naissance.
mais la j'ai besoin des date exact donc de la naissance.
j'ai pas compris xD
sinon moi je fais un log. pour des secrétaires et après il n'y aura plus aucune modification, elle vont pas s'amuser à rajouter un an partout...
Ma solution me convient lol A+
Avec ma requête précédente et un critère "-1" ça me sors ce que je veux comme résultat.
Maintenant je vais voir pour afficher ce résultat dans un texte.
sinon moi je fais un log. pour des secrétaires et après il n'y aura plus aucune modification, elle vont pas s'amuser à rajouter un an partout...
Ma solution me convient lol A+
Avec ma requête précédente et un critère "-1" ça me sors ce que je veux comme résultat.
Maintenant je vais voir pour afficher ce résultat dans un texte.