Calcul de catégorie d'age

izumi-shingen Messages postés 3 Statut Membre -  
Ysabe_l Messages postés 11942 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Ysabe_l Messages postés 11942 Date d'inscription   Statut Contributeur Dernière intervention   277
     
    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
  2. izumi-shingen Messages postés 3 Statut Membre
     
    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
  3. Ysabe_l Messages postés 11942 Date d'inscription   Statut Contributeur Dernière intervention   277
     
    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
  4. izumi-shingen Messages postés 3 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ysabe_l Messages postés 11942 Date d'inscription   Statut Contributeur Dernière intervention   277
     
    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
  7. Ysabe_l Messages postés 11942 Date d'inscription   Statut Contributeur Dernière intervention   277
     
    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