IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Convertisseur de calendrier gréegorien vers musulman


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Convertisseur de calendrier gréegorien vers musulman
    Bonjour !
    Je suis en train de développer un logiciel permettant de convertir une date provenant d'un calendrier grégorien (le plus commums, celui que vous tous utilisez chaques jours), dans un calendrier musulman. Il faut savoir quelques petits détails sur la différence des deux calendriers avant que je commence à vous présentez mon problème.
    Le calendrier musulman est composé de 12 mois.
    Les mois 1-3-5-7-9-11 sont composés de 30 jours.
    Les mois 2-4-6-8-10 sont composés de 29 jours.
    Pour définir le nombre de jours du 12ième mois, il existe un cycle de 30 ans. Ce cycle débute au début du calendrier musulman (sois l'équivalent de notre 9 septembre 622). En gros, les années (musulmanes) qui sont divisibles par 30 (sans reste dans la division) définisse le début d'un cycle.
    Sur ce cycle de 30 ans, les années 2-5-7-10-13-16-18-21-24-26-29 ont leur 12ième mois composés de 30 jours.
    Les années 1-3-4-6-8-9-11-12-14-15-17-19-20-22-23-25-27-28 ont leur 12ième mois composés de 29 jours.
    Pour infos : Une année musulman est plus courte d'en moyenne 11 jours par rapport a une année grégorienne (en moyenne 354,37 jours musulman contre 365,2425 jours grégorien)

    Voila toutes les infos à savoir, c'est un peu casse tête je l'avoue, mais la mesure du temps n'est jamais facile xD

    Donc j'ai réussi dans mon logiciel à convertir les années, et le jour (ce module n'est par contre pas intégré dans le code ci dessous, car ici on en aura pas besoin).

    Le principe de mes calculs est simple : je convertis la date grégorienne en nombre de jours total grégorien (que j'ai appelé x dans mon code), et qu'ensuite je convertis en nombre de jour musulman (qui est définis par x-227180.835 avec 227180.835 le nombre de jours grégoriens correspond au début du calendrier musulman, sois le 9 septembre 622.

    J'ai appelé annee29 les années du cycle ayant 29jours le 12ième mois, et anne30e les années du cycle ayant 30 jours le 12ième mois.
    m1,m2,m3...mx,m12 correspond au nom des mois (pour nous simplifier la vie ^^).
    Un cycle est ainsi définit par cycle=annee29*19 + annee30*11.

    Alors mon problème est simple. J'ai créé une boucle dont je prédéfinis le nombre de boucle. Le début correspond au premier cycle, et se termine au dernier cycle connu de la date que l'utilisateur entre. J'incrémente un cycle+30 annees jusqu'à ma limite (le nombre de cycle totaux existant étant définis par ((x-227180.835)/(354.37))/30 (sachant qu'une année musulmane compte en moyenne 354.37 jours.)

    Mon problème est maintenant simple, comment faire pour savoir à quel moment du cycle (le mois) le décompte vas s'arrété?
    Je n'arrive pas à trouver de solution pour faire le compte de l'ensemble de mes mois, et puis s'arrété au mois correspondant à ma limite de temps? (la limite etant le nombre de jours totaux musulmans comptés au debut par(x-227180.835).

    Je pensé faire une boucle qui a chaque boucle me compte un cycle, et dans la boucle mettre le contenu du cycle, c'est à dire la succession des mois. Et lorsque mon cycle s'arrête, il s'arrête au mois voulu (en prenant en compte le nombre de jours de chaque mois). Mais je pense pas que c'est la bonne solution vu que j'arrive à rien, et à côté je ne vois pas vraiment comment le faire d'autre. Si vous avez des idées !
    Je vous poste la partie de mon code où je bloque (j'ai laissé la conversion des années pour donner un point de repère, sachant que le premier cycle du calendrier musulman débute le 09/09/622 et finis le 09/09/652.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
     
    int main()
    {
     
        fflush(stdin);
        int jour,mois,annee,y,nbf,anneem,moism;
        int annee29,annee30,mois29,mois30,cycle,cyclef,nb_cycle,cyclec,cyclei;
        int m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13;
        float x,u;
        char jourm;
     
     
        do
        {
                       system("cls");fflush(stdin);
                       printf("Veuillez entrer une date Gregorienne sous la forme suivante : (jj/mm/aaaa)\n>> ");
                       scanf("%d/%d/%d",&jour,&mois,&annee);
     
                       if((annee%4==0&&annee%100!=0) || (annee%400==0)) nbf=29;
                       else nbf=28;
     
                       if(mois==02&&jour>nbf)y=0; 
                       else y=1;
     
        }while(jour<1 || jour>31 || mois<1 || mois>12 || y==0);
     
      switch (mois)
                           {
                           case 1:x=jour+(annee*365.2425)+251;break;
                           case 2:x=(31+jour)+(annee*365.2425)+251;break;
                           case 3:x=(31+nbf+jour)+(annee*365.2425)+251;break;
                           case 4:x=(62+nbf+jour)+(annee*365.2425)+251;break;
                           case 5:x=(92+nbf+jour)+(annee*365.2425)+251;break;
                           case 6:x=(123+nbf+jour)+(annee*365.2425)+251;break;
                           case 7:x=(153+nbf+jour)+(annee*365.2425)+251;break;
                           case 8:x=(184+nbf+jour)+(annee*365.2425)+251;break;
                           case 9:x=(214+nbf+jour)+(annee*365.2425)+251;break;
                           case 10:x=(245+nbf+jour)+(annee*365.2425)+251;break;
                           case 11:x=(275+nbf+jour)+(annee*365.2425)+251;break;
                           case 12:x=(306+nbf+jour)+(annee*365.2425)+251;break;
                           default:printf("Mois invalide");break;
                           }
     
                           anneem=(x-227180.835)/354.37;
                           printf("Annee musulmane:%d\n\n",anneem);
     
          m1=m3=m5=m7=m9=m11=mois30=30;
          m2=m4=m6=m8=m10=mois29=29;
     
     
          nb_cycle=((x-227180.835)/(354.37))/30;
     
          annee29=m2+m4+m6+m8+m10+mois29;
          annee30=m1+m3+m5+m7+m9+m11+mois30;
     
          cycle=annee29*19 + annee30*11;
     
     
          for(cyclei=0; cyclei>=nb_cycle ; cyclei=cyclei+30)
          {
     
     
     
     
                }
     
          printf("cycle= %d\n\n",cyclef);
     
    system("pause");
    return 0;
    }

    Merci pour vos aides !
    Cordialement,

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Soa,

    Pour convertir des dates de calendrier à calendrier, cherche du côté de

    Algorithme de D.A. Hatcher.

    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je viens de trouver un document d'une trentaine de page dessus. Je m'y plonge immédiatement et vous donne des nouvelles si j'arrive à trouver une solution =)
    En attendant, je ne crache pas sur d'autres idées ^^

    Merci de ta réponse droggo

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Joa,

    Une solution est d'utiliser les Jours Juliens :

    Pour les 2 calendriers à gérer, on crée la transformation

    calendrier <==> Jour Julien

    et on peut ainsi facilement passer d'un à l'autre.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Salut

    J'ai eu le même problème que toi, et finalement j'y suis parvenue en convertissant la date du calendrier grégorien en jour julien. Il existe une formule mathématique qui permet la conversion des deux calendriers a partir du jour julien la voici :
    //Calendrier hégirien
    jd(jour julien), ah(année hégire), mh(mois hégire), jh(jour hégire):
    z=jd+0.5;
    ah=(z*30-58442554)/10631;
    r=(ah*10631+58442583);
    rb=r/30;
    rbis=z-rb;
    mh=(rbis*11+330)/325;
    rr=rbis-(mh*325-320)/11;
    jh=rr+1;

    Ciao !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Mais ça dépend de quelle façon tu définis le jour julien de la date grégorienne.
    Pour ma part, l'ajout de ton module ne fonctionne pas.

    La définition du jour julien dans mon code est ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
      /*definition des valeurs*/
        y=4716;
        m=3;
        n=12;
        /* ------- */
        p=1461;
        r=4;
        q=0;
        j=1401;
        s=153;
        t=2;
        u=5;
        /*fin definition des valeurs*/
     
     
                   /* calcul du jour julien*/
        YF=Y+y-(n+m-1-M)/n;
     
        MF=(M-m+n)%n;
     
        DF=D-1;
     
        jj=(p*YF+q)/r+(s*MF+t)/u+DF-j;
                /*fin du calcul du jour julien*/
    Sachant que la définition des valeurs sont spécifiques au calendrier Gregorien.
    Les formules qui suivent sont universelles, il suffit de changer la définition des valeurs pour changer de calendrier de départ.
    Avec la valeur du jour julien (jj) que je trouve, je ne peux pas convertir du calendrier grégorien à l'hégirien.

    Peux tu me dire comment ton 'j' de départ est calculé?

    Cordialement,

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon je crois avoir réussi à finir mon calendrier, mais je ne suis pas sur à 100% de sa fiabilité. L'année d'origine du calendrier musulman est bien l'équivalent du 16 juillet 622 grégorien.

    Cependant, je n'obtiens pas les mêmes dates ultérieurs que certaines convertisseurs que l'on trouve sur le net.
    D'un côté, je me suis basé sur l'algorithme de hatcher (avec ses propres tables de paramètre, bien que j'en ai modifier une inexacte).

    Les convertisseurs sur internet sont pour la plupart basé sur les travaux de Jeau Lefort.

    A qui dois je me fier ? xD

    Je vous met le code de mon calendrier, si vous y trouvez des erreurs ou autres.
    Comme je l'ai dis plus haut, je me suis basé sur l'algorithme de D.A Hatcher pour l'élaborer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #include <stdlib.h>
    #include <stdio.h>
     
    int main()
    {
        int D,M,Y;
        int DH,MH,YH;
        float DF,MF,YF;
        float JHF,YHF,THF,MHF;
        int nbf,v,y,m,n,p,q,r,s,t,u,J,jg,jm;
        float rm,pm,sm,nm,vm,wm,ym,um,mm;
     
     
        do
        {
                       system("cls");fflush(stdin);
                       printf("Veuillez entrer une date Gregorienne sous la forme suivante : (jj/mm/aaaa)\n>> ");
                       scanf("%d/%d/%d",&D,&M,&Y);
     
                       if((Y%4==0&&Y%100!=0) || (Y%400==0)) nbf=29;
                       else nbf=28;
     
                       if(M==02&&D>nbf)v=0; 
                       else v=1;
     
        }while(D<1 || D>31 || M<1 || M>12 || v==0);
     
        /*definition des valeurs gregorienne*/
        y=4716 ; m=3 ; n=12;
        /* ------- */
        p=1461 ; r=4 ; q=0 ; jg=1401 ;
        s=153 ; t=2 ; u=5 ;
        /*fin definition des valeurs gregorienne*/
     
     
                   /* calcul du jour julien*/
        YF=Y+y-(n+m-1-M)/n;
     
        MF=(M-m+n)%n;
     
        DF=D-1;
     
        J=(p*YF+q)/r+(s*MF+t)/u+DF-jg;
                /*fin du calcul du jour julien*/
     
        /*---------------------------------*/
        /*definition des valeurs musulmanes*/
        rm=30  ; pm=10631 ; sm=2951 ; nm=12 ;
        vm=15 ; wm=10 ; ym=5519 ; um=100 ; mm=1 ; jm=7605;
        /*fin definition des valeurs musulmanes/*
        
        
                /* conversion du jour julien en date hegirienne */
     
      JHF=J+jm;
      YHF=(rm*JHF+vm)/pm;
      THF=(((int)rm*(int)JHF+(int)vm)%(int)pm)/(int)rm;
      MHF=(um*THF+wm)/sm;
      DH=(((int)um*(int)THF+(int)wm)%(int)sm)/(int)um+1;
      MH=(((int)MHF+m-1)%(int)nm)+1;
      YH=YHF-ym+(nm+mm-1-M)/nm;
     
               /* fin de conversion du jour julien en date hegirienne */
     
               printf("\nLa date gregorienne %d/%d/%d equivaut a \nla date %d/%d/%d hegirienne\n\n",D,M,Y,DH,MH,YH);
     
    system("pause");
    return 0;
     
    }

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Salut !

    J'ai rencontré les même problème que toi au niveau des résultats que j'obtenais en comparant avec les convertisseur que tu trouves sur le web en faite il faut que dans ton programme tu affiches ton jour julien et compare le au jour julien d'un convertisseur web tu pourras certainement noté qu'il y a une légère différence et certainement pourquoi tu obtiens des dates différentes à la conversion final.
    Voila comment j'ai obtenue le jour Julien exacte :
    je saisie ma date grégorienne de cette façon --> jour/mois/annee
    //Conversion calendrier
    //Tout d'abord conversion de la date du calendrier grégorien en jour julien
    int d,e,year,day;
    double jd;
    d=(annee/100); // 4 calcul intermédiaires pour ne prendre //
    e=2-d+(d/4); // que la partie entière du résultats
    year=(365.25*annee);
    day=(30.6001*(mois+1));
    jd=year+day+jour+1720994.5+e; (a noter que mon jour julien est un double et non un int)


    Ciao !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 10
    Points
    10
    Par défaut affichage de la date Musulman
    Bonjour Autnett,
    je me suis aussi intéresser a ce problème de calendrier.

    J’ai pris un autre chemin, c’est a dire de prendre un calendrier lunaire, puis d’incrémenter un certain Nb de jour pour avoir la date du 1er mois qui m’intéresse, par exemple le

    1 ramadan 1432 c’est a dire 01.09.1432 qui est égal a la date officiel du 01.08.2011.

    Sur le site de Louisg (http://www.louisg.net/Formules.htm) il y a deux formules qui permet de trouver la première lune .
    XC_NL : Elle permet d'obtenir le jour julien de la nouvelle lune la plus proche d'une date grégorienne donnée.
    Et
    EXC_DTJJ : Obtenir la date grégorienne à partir du jour julien

    Jusque ici, mon tableau me permet de trouve ma première lune (avec quelles que différences par rapport au vrai calendrier musulman, ce qui revient a dire que la lune n’est pas musulmane),
    mais le plus grave c’est que le format Excel de la date personnalisée
    [$-1060000]B2j.mm.aaaa;@
    me renvoie (m’affiche) le 2.09.1432 au lieux de 1.09.1432.

    Donc j’en déduis qu’il n’est pas possible d’afficher les vraies dates musulmanes !!!???

    En espérant me tromper dans mes déductions, je vous souhaite une bonne journée.

    PS Je ne trouve pas de formule pour chercher la neuvième lune de l'année, par exemple 2011

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    je ré-itère un lien plusieurs fois mentionné, déjà...

    http://fr.wikipedia.org/wiki/Jour_julien

    Vous y verrez que une date julienne ne DOIT PAS être mise sous forme de mois pour être utile...

    Donc, il faut :

    • calculer à quel jour julien correspond le début de votre calendrier
    • transformer la date "normale" dont vous voulez calculer la correspondence en jour julien ( fonction date "normale" -> jour julien)
    • calculer la date musulmane à partir de la différence (jour julien - jour julien "0") (fonction jour julien -> date musulmane)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    je ré-itère un lien plusieurs fois mentionné, déjà...

    http://fr.wikipedia.org/wiki/Jour_julien

    Vous y verrez que une date julienne ne DOIT PAS être mise sous forme de mois pour être utile...

    Donc, il faut :

    • calculer à quel jour julien correspond le début de votre calendrier
    • transformer la date "normale" dont vous voulez calculer la correspondence en jour julien ( fonction date "normale" -> jour julien)
    • calculer la date musulmane à partir de la différence (jour julien - jour julien "0") (fonction jour julien -> date musulmane)
    Bonjour souviron34,
    merci pour ton intérêt et tes conseils.
    Malgré tout il reste une inconnue que je n’arrive pas à comprendre.

    Je prends l’exemple de la 9eme lune de 2011.qui est le 30.07.2011
    Le jour julien est 2455773.28
    La date de la nouvelle lune est bien ce jour julien : 30.07.2011 ( à 18H39et 48 sec)
    La date du 1.09.1432 est égale avec Excel au 31.07.2011 au lieu du 01.08.2011 qu’Excel affiche 2.09.1432

    Donc la nouvelle lune est le 30 juillet 2011.
    Le 1 ramadan 1432 est le 1 août 2011.
    Excel affiche 2.09.1432
    et la lune n’est pas musulmane en 2011 puisqu’elle est au 31.juillet 2011.

    Je fais certainement une erreur, mais je suis dans le brouillard.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 10
    Points
    10
    Par défaut jour et mois affichage faut
    Citation Envoyé par Infosams Voir le message
    Salut

    J'ai eu le même problème que toi, et finalement j'y suis parvenue en convertissant la date du calendrier grégorien en jour julien. Il existe une formule mathématique qui permet la conversion des deux calendriers a partir du jour julien la voici :
    //Calendrier hégirien
    jd(jour julien), ah(année hégire), mh(mois hégire), jh(jour hégire):
    z=jd+0.5;
    ah=(z*30-58442554)/10631;
    r=(ah*10631+58442583);
    rb=r/30;
    rbis=z-rb;
    mh=(rbis*11+330)/325;
    rr=rbis-(mh*325-320)/11;
    jh=rr+1;

    Ciao !
    Bonjour Infosams,
    Date grégorienne.
    11.08.2010
    jd(jour julien)
    2455419.5
    J'ai refait ton module, seul l'année est juste.

    ah(année hégire)
    1431
    Impossible pour le jour et le mois.
    Est ce que la transposition du copier /coller introduit une erreur.

    mh(mois hégire)
    0.982666667

    jh(jour hégire)
    0.090909091

    Merci pour ta futur réponse

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 10
    Points
    10
    Par défaut calendrier Hijri avec une formule financière, RAMADAN
    Bonjour,
    j’ai construit mon calendrier Hijri avec cette formule financière
    b = a * ( 1+ ( x * ( c% )))
    x = (( b / a ) -1 ) / ( c% )


    Adaptée pour trouver le 1 ramadan (9eme mois) année xxxx(237 eme jour Hijri) dans une année grégorienne choisie= $A$2.

    =ENT(3.99999999999999*(1+(ENT(((DATE($A$2+N("<---année cherchée");1;1) /3.99999999999999) -1) /88.5916666666669)+N("+ un/deux/cycle(s) lunaire--->")+1)*88.5916666666669))+N("+/- zéro/un jour LIEUX--->")+0+N("Formules: b = a * ( 1+ ( x * ( c% ))) <> x = (( b / a ) -1 ) / ( c% ) Plage 1900-9999 237eme jour HIJRI")

    Pour trouver l’année Hijri

    = (ENT((( DATE($A$2;1;1) / 3.99999999999999 ) -1) / (88.5916666666669))+N("+ un/deux/cycle(s) lunaire--->")+1)+1317

    Si bissextille ($V$9= cellulle de l'année Hijri)

    =SI(OU(2=MOD($V$9;30);5=MOD($V$9;30);7=MOD($V$9;30 );10=MOD($V$9;30);13=MOD($V$9;30);16=MOD($V$9;30); 18=MOD($V$9;30);21=MOD($V$9;30);24=MOD($V$9;30);26 =MOD($V$9;30);29=MOD($V$9;30)+N("mod 30 égale à 2, 5, 7, 10, 13, 16, 18, 21,24, 26, ou 29 = Année bissextile."));"Année bissextile";"Année commune")

    Exemple pour une date de fête ou un autre jour que le 1.9.xxxx Hijri

    =ENT(3.99999999999999*(1+(ENT(((DATE($A$2+N("<---année cherchée");1;1) /3.99999999999999) -1) /88.5916666666669)+N("+ un/deux/cycle(s) lunaire--->")+$AA$47)*88.5916666666669))+N("DATE dans le mois par ex.: le 16 du mois= +15 ----->")+15+N("Choix du 1 du mois par ex -236(=valeur de CD2)--->")+-236+N("+/- zéro/un jour LIEUX=$D$2--->")+$E$2+N("Principe le 1 Ramadan = 237eme jour HIJRI, donc -236 = le 1 Muharram + par ex +15 = le 16 du Muharram ")

    Comme il peut y a voir deux "ramadan" dans la même année grégorienne, (par ex.:1900 ou 2030) il faut corriger) +N("+ un/deux/cycle(s) lunaire--->")+$AA$47

    La formule fonctionne de 1900 à 9999 (sauf le jour semaine de 1900 et le 29.02.1900 où il faut apporté une correction).

    Voici une bonne base pour faire votre calendrier Hijri avec Excel. : - )

Discussions similaires

  1. [SP-2010] Migration Calendrier SP2007 vers SP 2010
    Par Montagna73 dans le forum SharePoint
    Réponses: 1
    Dernier message: 30/01/2011, 15h14
  2. Réponses: 0
    Dernier message: 22/04/2010, 10h02
  3. Partage de calendrier 2k7 vers 2k3
    Par DeeVoiD dans le forum Outlook
    Réponses: 3
    Dernier message: 07/01/2010, 17h49
  4. [OL-2003] Copie automatique d'un calendrier partagé vers mes calendriers
    Par cybersnake dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 31/08/2009, 09h29
  5. convertisseur de classe C++ vers classe Java ?
    Par novice12 dans le forum C++
    Réponses: 3
    Dernier message: 16/12/2004, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo