Calcul de catégorie d'age

Fermé
izumi-shingen Messages postés 3 Date d'inscription samedi 18 octobre 2014 Statut Membre Dernière intervention 20 octobre 2014 - 18 oct. 2014 à 23:25
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 - 20 oct. 2014 à 19:10
Bonjour à toutes et à tous,

alors voilà, j'ai une feuille excel qui calcule une catégorie sportive selon la date entrée qui fonctionne sous excel et j'aimerais transformer cette feuille en code html ou java à copier/coller sur le site du club pour que les licenciés puisse calculer en ligne eux-memes leur categorie. Est-ce possible? Je suis débutant et ne connais pas du tout la programmation. Un grand merci d'avance.

6 réponses

Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 274
19 oct. 2014 à 01:03
Salut,

Oui en javascript (et non java qui n'a rien à voir) tu peux le faire.

Il faudrait faire un formulaire pour récupérer une date puis l'utiliser pour calculer.

Par exemple (j'ai pris les catégories d'âge de l'athlétisme, il suffit d'adapter dans le code)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Catégorie sportive</title>
        <meta name="description" content="" />
    </head>
    <body>
        <h1>Dans quelle catégorie êtes-vous ?</h1>
        <p>Entrez votre date de naissance au format JJ/MM/AAAA</p>
        <input type="text" id="date" /> <!-- le champ pour entrer la date de naissance -->
        <input type="button" value="calculer" id="valider" onClick="calculs();" /><!-- bouton de validation qui lance le script -->

        <div id="reponse" style="visibility:hidden;"> <!-- div masquée pour le résultat -->
            <p>Vous êtes dans la catégorie : <span id="categorie"></span>.</p>
        </div>

        <!-- le script -->
        <script language = "javascript">
        function calculs() {
            // on récupère l'année en cours
            date_actuelle = new Date();
            var annee_en_cours = date_actuelle.getFullYear();
            // on récupère la date entrée
            var date_naissance = document.getElementById("date").value;
            // on vérifie que le champ n'est pas vide
            if(date_naissance == "") {
                alert("vous devez entrer une date pour effectuer le calcul");
            }
            // si ce n'est pas vide on calcule la catégorie
            else {
                // on isole l'année de la date de naissance
                var annee_naissance = date_naissance.substr(6,4)
                // on calcule la différence entre l'année en cours et l'année de naissance
                var age = annee_en_cours-annee_naissance;
                // on en déduit la catégorie sportive
                var catego = ""
                if (age <= 9)
                {
                    catego = "Poussin";
                }
                if (age > 9 && age <= 11)
                {
                    catego = "Pupille";
                }
                if (age > 11 && age <= 13)
                {
                    catego = "Benjamin";
                }
                if (age > 13 && age <= 15)
                {
                    catego = "Minime";
                }
                if (age > 15 && age <= 17)
                {
                    catego = "Cadet";
                }
                if (age > 17 && age <= 19)
                {
                    catego = "Junior";
                }
                if (age > 19 && age <= 22)
                {
                    catego = "Espoir";
                }
                if (age > 22 && age <= 39)
                {
                    catego = "Sénior";
                }
                if (age > 39 && age <= 49)
                {
                    catego = "Vétéran 1";
                }
                if (age > 49 && age <= 59)
                {
                    catego = "Vétéran 2";
                }
                if (age > 59 && age <= 69)
                {
                    catego = "Vétéran 3";
                }
                if (age > 69)
                {
                    catego = "Vétéran 4";
                }

                // on les affiche dans les bonnes div
                document.getElementById('categorie').innerHTML = catego;
                // on affiche la div de réponse
                document.getElementById('reponse').style.visibility="visible";
            }
        }
        </script>
    </body>
</html>



Pour éviter les soucis de saisie de la date et les vérifications (que je n'ai pas fait dans l'exemple), le mieux serait d'utiliser quelque chose comme datepicker de JQueryUI : https://jqueryui.com/datepicker/
1
izumi-shingen Messages postés 3 Date d'inscription samedi 18 octobre 2014 Statut Membre Dernière intervention 20 octobre 2014
19 oct. 2014 à 19:04
Bonjour et un grand merci.
Dans mon cas, pour le judo les catégories sont les suivantes : (la difficulté, c'est que ça change au 1er janvier et non a la date d'anniversaire, c'est pas seulement par rapport à l'âge)


Baby-Judo : né(e) en 2008 / 2009 jusqu'au 31/12/2014

né(e) en 2009 / 2010 à partir du 01/01/2015

Mini-Poussin(e) : né(e) en 2006 / 2007 jusqu'au 31/12/2014

né(e) en 2007 / 2008 à partir du 01/01/2015

Poussin(e) : né(e) en 2004 / 2005 jusqu'au 31/12/2014

né(e) en 2005 / 2006 à partir du 01/01/2015

Benjamin(e) : né(e) en 2002 / 2003 jusqu'au 31/12/2014

né(e) en 2003 / 2004 à partir du 01/01/2015

Minime : né(e) en 2000 / 2001 jusqu'au 31/12/2014

né(e) en 2001 / 2002 à partir du 01/01/2015

Cadet(te) : né(e) en 1997 / 1998 / 1999 jusqu'au 31/12/2014

né(e) en 1998 / 1999 / 2000 à partir du 01/01/2015

Junior : né(e) en 1994 / 1995 / 1996 jusqu'au 31/12/2014

né(e) en 1995 / 1996 / 1997 à partir du 01/01/2015

Sénior : né(e) en 1993 et avant jusqu'au 31/12/2014

né(e) en 1994 et avant à partir du 01/01/2015


J'espère ne pas être trop exigeant....

Encore merci beaucoup.
0
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 274
19 oct. 2014 à 21:43
Bonjour,

C'est marrant je croyais que les catégories baby et mini-poussin étaient une "invention" du club de judo de ma fille, je ne savais pas qu'elles étaient officielles.

Là dans ce que j'ai fait on rentre la date de naissance entière mais seule l'année est prise en compte pour le calcul donc normalement c'est bon.

J'ai pris "var age = annee_en_cours-annee_naissance;"
donc un enfant né en décembre 2007
au premier janvier 2015 il aura tout juste 7 ans (et un mois)
mais pour le script il aura 8 ans (2015 - 2007 = 8)
donc il sera dans la bonne catégorie.

Je vous le refais avec les bons noms et âges de catégories pour le judo.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Catégorie sportive</title>
        <meta name="description" content="" />
    </head>
    <body>
        <h1>Dans quelle catégorie êtes-vous ?</h1>
        <p>Entrez votre date de naissance au format JJ/MM/AAAA</p>
        <input type="text" id="date" /> <!-- le champ pour entrer la date de naissance -->
        <input type="button" value="calculer" id="valider" onClick="calculs();" /><!-- bouton de validation qui lance le script -->

        <div id="reponse" style="visibility:hidden;"> <!-- div masquée pour le résultat -->
            <p>Vous êtes dans la catégorie : <span id="categorie"></span>.</p>
        </div>

        <!-- le script -->
        <script language = "javascript">
        function calculs() {
            // on récupère l'année en cours
            date_actuelle = new Date();
            var annee_en_cours = date_actuelle.getFullYear();
            // on récupère la date entrée
            var date_naissance = document.getElementById("date").value;
            // on vérifie que le champ n'est pas vide
            if(date_naissance == "") {
                alert("vous devez entrer une date pour effectuer le calcul");
            }
            // si ce n'est pas vide on calcule la catégorie
            else {
                // on isole l'année de la date de naissance
                var annee_naissance = date_naissance.substr(6,4)
                // on calcule la différence entre l'année en cours et l'année de naissance
                var age = annee_en_cours-annee_naissance;
                // on en déduit la catégorie sportive
                var catego = ""
                if (age < 5)
                {
                    catego = "Trop jeune pour faire du judo";
                }
                if (age >= 5 && age <= 6)
                {
                    catego = "Baby-Judo";
                }
                if (age > 6 && age <= 8)
                {
                    catego = "Mini-Poussin(e)";
                }
                if (age > 8 && age <= 10)
                {
                    catego = "Poussin(e)";
                }
                if (age > 10 && age <= 12)
                {
                    catego = "Benjamin(e)";
                }
                if (age > 12 && age <= 14)
                {
                    catego = "Minime";
                }
                if (age > 14 && age <= 17)
                {
                    catego = "Cadet(te)";
                }
                if (age > 17 && age <= 20)
                {
                    catego = "Junior";
                }
                if (age > 21)
                {
                    catego = "Sénior";
                }

                // on affiche le nom de la catégorie
                document.getElementById('categorie').innerHTML = catego;
                // on affiche la div de réponse
                document.getElementById('reponse').style.visibility="visible";
            }
        }
        </script>
    </body>
</html>
0
izumi-shingen Messages postés 3 Date d'inscription samedi 18 octobre 2014 Statut Membre Dernière intervention 20 octobre 2014
20 oct. 2014 à 02:38
Salut et merci encore, c'est trop génial! Ca marche du tonnerre.
Oui pour le judo ce sont les catégories officielles, dans certains clubs ils acceptent les enfants dès 3 ans mais nous on commence à 4, c'est bien assez tôt pour eux. En tout cas je souhaite à ta fille de se plaire dans ce sport qui est le mien.

Dernière chose, j'ai essayé de mettre une sélection de date avec un calendrier interactif (<input type="date" id="date" /> au lieu de <input type="text" id="date" />, je peux effectivement sélectionner la date dans un mini-calendrier mais le résultat affiché est un point "." Mais cela c'est juste un plus si c'est pas possible, ça me convient très bien.

Je te remercie une fois de plus et en japonais pour la circonstance :

domo arigato gozai mashita
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 274
20 oct. 2014 à 16:03
Bonjour,

En effet, j'essaye d'éviter les input spécifiques à HTML5 qui ne sont pas reconnus par tous les navigateurs. Selon moi il vaut mieux pour le moment mettre 3 listes déroulantes avec respectivement les jours les mois et les années.

Par contre j'ignore comment le input type="date" récupère la date, donc pour le moment je n'ai pas de réponse, mais je regarderai quand même par curiosité.

A mon avis le principal soucis c'est que les navigateurs qui gèrent ce type et ceux qui ne le gèrent pas ne vont pas récupérer l'information entrée sous le même format (les anciens auront un input de type texte comme dans ma version) et donc il va falloir prévoir les deux cas pour le calcul en fonction du format récupéré. Je sais pas si ce que je dis là est très clair.

Je vais regarder ça quand j'aurais du temps.
0
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 274
20 oct. 2014 à 19:10
Et voilà ce que ça donne avec le input de type date et sa prise en charge pour les navigateurs qui ne le gèrent pas et proposeront le type text.

Au passage j'aurais appris que ce type date retourne la date au format AAAA-MM-JJ

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Catégorie sportive</title>
        <meta name="description" content="" />
    </head>
    <body>
        <h1>Dans quelle catégorie êtes-vous ?</h1>
        <p>Entrez votre date de naissance au format JJ/MM/AAAA</p>
        <input type="date" id="date" /> <!-- le champ pour entrer la date de naissance -->
        <input type="button" value="calculer" id="valider" onClick="calculs();" /><!-- bouton de validation qui lance le script -->

        <div id="reponse" style="visibility:hidden;"> <!-- div masquée pour le résultat -->
            <p>Vous êtes dans la catégorie : <span id="categorie"></span>.</p>
        </div>

        <!-- le script -->
        <script language = "javascript">
        function calculs() {
            // on récupère l'année en cours
            date_actuelle = new Date();
            var annee_en_cours = date_actuelle.getFullYear();
            // on récupère la date entrée
            var date_naissance = document.getElementById("date").value;
            // on vérifie que le champ n'est pas vide
            if(date_naissance == "") {
                alert("vous devez entrer une date pour effectuer le calcul");
            }
            // si ce n'est pas vide on calcule la catégorie
            else {
                // on vérifie si la date est entrée au format text ou date
                var regEx1 = /[0-9]{2}\/[0-9]{2}\/[0-9]{4}/; // format text
                var regEx2 = /[0-9]{4}-[0-9]{2}-[0-9]{2}/; // format date

                // on isole l'année de naissance
                var annee_naissance = "";
                if(regEx1.test(date_naissance)) {
                    annee_naissance = date_naissance.substr(6,4)
                }
                if(regEx2.test(date_naissance)) {
                    annee_naissance = date_naissance.substr(0,4)
                }
                
                // on calcule la différence entre l'année en cours et l'année de naissance
                var age = annee_en_cours-annee_naissance;
                // on en déduit la catégorie sportive
                var catego = ""
                if (age < 5)
                {
                    catego = "Trop jeune pour faire du judo";
                }
                if (age >= 5 && age <= 6)
                {
                    catego = "Baby-Judo";
                }
                if (age > 6 && age <= 8)
                {
                    catego = "Mini-Poussin(e)";
                }
                if (age > 8 && age <= 10)
                {
                    catego = "Poussin(e)";
                }
                if (age > 10 && age <= 12)
                {
                    catego = "Benjamin(e)";
                }
                if (age > 12 && age <= 14)
                {
                    catego = "Minime";
                }
                if (age > 14 && age <= 17)
                {
                    catego = "Cadet(te)";
                }
                if (age > 17 && age <= 20)
                {
                    catego = "Junior";
                }
                if (age > 21)
                {
                    catego = "Sénior";
                }

                // on affiche le nom de la catégorie
                document.getElementById('categorie').innerHTML = catego;
                // on affiche la div de réponse
                document.getElementById('reponse').style.visibility="visible";
            }
        }
        </script>
    </body>
</html>
0