XL 2010 formule si selon jour de semaine

rodo77

XLDnaute Nouveau
bonjour
je recherche une formule qui selon le lundi ou mardi ou mercredi ... me donne un chiffre choisi
pourriez vous m aider ?
 

Etoto

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour Mandyvall, et tous les autres (peur d'en oublier si je les cite)

peut être un peu plus simple Etoto ;)

A mettre en G7

=SI(NB.SI(Fériés!$B$3:$B$11;A7);0;CHOISIR(JOURSEM(A7;2);8,5;8,5;8,5;8,5;8,5;0;0))

Cordialement
Re,

Plus simple mais plus long ;) . Par hasard qu'elle est la différence entre ta formule et la mienne ? J'aime apprendre donc j'aimerai savoir.
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour le fil, le forum, coucou Jocelyn (il y avait très longtemps qu'on ne s'était pas croisés dans un fil)

Excel ne connait pas les jours fériés de base,
Etoto & Mandyvall , si Excel ne les connait pas de base et si Vba ne vous rebute pas trop, j'ai fait une fonction personnalisée polyvalente dédiée, simple à utiliser, utilisable en encapsulage avec les fonctions de feuille d'Excel ou en MFC, elle les calcule tous, y compris les spécificités régionales en option. Elle permet de se passer de la tenue d'un tableau de référencement des jours fériés. Voir les exemples dans le fichier joint à la fonction.
https://www.excel-downloads.com/threads/tableau-automatise-des-jours-feries.20056501/
[édition : fonction passée en 2.0, intègre maintenant la Suisse, la Belgique et le Luxembourg]

Bien cordialement, @+
 
Dernière édition:

Etoto

XLDnaute Barbatruc
Bonjour le fil, le forum, coucou Jocelyn (il y avait très longtemps qu'on ne s'était pas croisés dans un fil)


Etoto & Mandyvall , si Excel ne les connait pas de base et si Vba ne vous rebute pas trop, j'ai fait une fonction personnalisée polyvalente dédiée, simple à utiliser, utilisable en encapsulage avec les fonctions de feuille d'Excel ou en MFC, elle les calcule tous, y compris les spécificités régionales en option. Elle permet de se passer de la tenue d'un tableau de référencement des jours fériés. Voir les exemples dans le fichier joint à la fonction.
https://www.excel-downloads.com/threads/tableau-automatise-des-jours-feries.20056501/

Bien cordialement, @+
Re,

Merci de ton super fichier, tu connais une alternative pour avoir les jours fériés d'autres pays tels que la Suisse ou la Belgique ?
 

Etoto

XLDnaute Barbatruc
Salut Etoto

Il suffit de les connaitre ou de connaitre leur règle de calcul et de modifier la fonction pour les gérer, on peut aussi ajouter une option pays à la fonction, tu as un besoin particulier ?

Bien cordialement, @+
Re,

Personnellement, je vais essayer de m'en occuper tout seul parce que je voudrais la Suisse mais le problème c'est que les jours change selon le Canton/Département et vu qu'il y'en a 26 (dont 4 francophone) ça va être long. Je suis dans le Canton de Vaud pour les jours fériés.


EDIT : @Yeahou, tu fais déjà beaucoup dans le forum, faut que j'utilise ma formation en VBA maintenant.
 
Dernière édition:

Etoto

XLDnaute Barbatruc
Bonjour Etoto, Yeahou,

4 cantons francophones seulement sur 26 ? ça fait du 15,38 %, ça ! pour les autres 84,62 %, ça doit être suisse, ou peut-être suisse-allemand ? ;)

soan
Re,

Sauf que les 4 (5 si je compte Fribourg et Berne qui sont bilingues) font le tiers de la taille du pays.

Et y'a aussi 1 Canton Italien

Et 1 qui utilise le Romanche et le Suisse-Allemand
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
re,

voila le corps de la fonction modifié, plus qu'à ajouter le code propre au pays.
ça pourrait être sympa d'ajouter cette fonctionnalité, mais il y a beaucoup de pays et on arrivera à saturer la fonction, peut être au final faudra t'il faire une sous fonction par pays.

Bien cordialement, @+

[édition : code du post supprimé, la fonction est passée en 2.0, intègre maintenant la Suisse, la Belgique et le Luxembourg.
https://www.excel-downloads.com/threads/tableau-automatise-des-jours-feries.20056501/]
 
Dernière édition:

Etoto

XLDnaute Barbatruc
re,

voila le corps de la fonction modifié, plus qu'à ajouter le code propre au pays.


Bien cordialement, @+
VB:
Function Tab_Jours_Feries(Date_Deb_Ref, Optional ByVal Date_Fin_Ref = 0, Optional Lun_Pentecote As Boolean = 1, Optional Region_Ref As Byte = 0, Optional Pays_Ref% = 33) As Variant
    'Fonction Tab_Jours_Feries V1.0 By Yeahou
    'Fonction Tab_Jours_Feries V1.1 By Yeahou, correction des jours fériés DOMCOM
    'Renvoie un tableau des jours fériés compris entre deux dates utilisable avec les fonctions d'Excel acceptant les tableaux exemple : NB.JOURS.OUVRES ou NBVAL
    'si Date_Fin_Ref est omis, teste si la journée est fériée et renvoie un boolean
    'paramétrage optionnel du Lundi de Pentecôte et de la région pour les jours fériés régionaux
   
    'Date_Deb_Ref et Date_Fin_Ref -> une date (ex : 03/12/2021)
    'Lun_Pentecôte=0 enlève le Lundi de Pentecôte des jours fériés, Lun_Pentecôte=1 ou omis le Lundi de Pentecôte est férié
    'Region_Ref=0 ou omis => standard métropole (sauf Alsace-Moselle)
    'Region_Ref=1 => Alsace-Moselle
    'Region_Ref=2 => Guadeloupe & Saint-Martin
    'Region_Ref=3 => Guyane
    'Region_Ref=4 => la Réunion
    'Region_Ref=5 => Martinique
    'Region_Ref=6 => Mayotte
    'Region_Ref=7 => Saint-Barthélemy
    'Region_Ref=8 => Nouvelle -Calédonie
    'Region_Ref=9 => Polynésie française
    'Region_Ref=10 => Wallis et Futuna
   
    Dim Test_Journee As Boolean
    If Date_Fin_Ref = 0 Then Date_Fin_Ref = Date_Deb_Ref: Test_Journee = True
    If IsDate(Date_Deb_Ref) And IsDate(Date_Fin_Ref) Then
        Dim Annee_Ref%, Dim_Paques As Date, Date_en_Cours As Date, Tablo_J_F() As Date, Jour_Ferie As Boolean, Compteur&
        Annee_Ref = Year(Date_Deb_Ref)
        'détermine le dimanche de Paques sur Date_Deb_Ref
        Dim_Paques = CDate(((Round(DateSerial(Annee_Ref, 4, (234 - 11 * (Annee_Ref Mod 19)) Mod 30) / 7, 0) * 7) - 6))
       
        Select Case Pays_Ref
        Case Is = 33 'France
            For Date_en_Cours = Date_Deb_Ref To Date_Fin_Ref
                If Not Annee_Ref = Year(Date_en_Cours) Then 'relance le calcul du Dimanche de paques si chgt d'année sur Date_en_Cours
                    Annee_Ref = Year(Date_en_Cours)
                    Dim_Paques = CDate(((Round(DateSerial(Annee_Ref, 4, (234 - 11 * (Annee_Ref Mod 19)) Mod 30) / 7, 0) * 7) - 6))
                End If
                Jour_Ferie = False
                Select Case Left(DateValue(Date_en_Cours), 5)
                    Case Is = "01/01", "01/05", "08/05", "14/07", "15/08", "01/11", "11/11", "25/12", _
                        Left(DateValue(Dim_Paques) + 1, 5), Left(DateValue(Dim_Paques) + 39, 5)
                        'Premier janvier, Fête du travail, Victoire des alliés, Fête nationale, Assomption, Toussaint, Armistice, Noël
                        ', Lundi de Paques, Jeudi de l'Ascension
                        Jour_Ferie = True
                    Case Is = Left(DateValue(Dim_Paques) + 50, 5) 'Lundi de Pentecôte
                        Jour_Ferie = Lun_Pentecote
                    Case Is = Left(DateValue(Dim_Paques) - 2, 5), "26/12"  'Alsace-Moselle
                        'Vendredi Saint, Saint Etienne
                        If Region_Ref = 1 Then Jour_Ferie = True
                    Case Is = "27/05"  'Guadeloupe & Saint-Martin
                        'Abolition de l'esclavage
                        If Region_Ref = 2 Then Jour_Ferie = True
                    Case Is = "10/06" 'Guyane
                        'Abolition de l'esclavage
                        If Region_Ref = 3 Then Jour_Ferie = True
                    Case Is = "20/12" 'La Réunion
                        'Abolition de l'esclavage
                        If Region_Ref = 4 Then Jour_Ferie = True
                   Case Is = "22/05" 'Martinique
                        'Abolition de l'esclavage
                        If Region_Ref = 5 Then Jour_Ferie = True
                    Case Is = "27/04" 'Mayotte
                        'Abolition de l'esclavage
                        If Region_Ref = 6 Then Jour_Ferie = True
                    Case Is = "09/10" 'Saint-Barthélemy
                        'Abolition de l'esclavage
                        If Region_Ref = 7 Then Jour_Ferie = True
                    Case Is = "24/09" 'Nouvelle-Calédonie
                        'Fête de la citoyenneté
                        If Region_Ref = 8 Then Jour_Ferie = True
                    Case Is = "05/03", "29/06" 'Polynésie française ok
                        'Arrivée de l'Évangile, Fête de l’autonomie
                        If Region_Ref = 9 Then Jour_Ferie = True
                    Case Is = "28/04", "29/07" 'Wallis et Futuna
                        'Saint Pierre Chanel, Fête du territoire
                        If Region_Ref = 10 Then Jour_Ferie = True
                    Case Else
                End Select
                If Jour_Ferie Then
                    Compteur = Compteur + 1
                    ReDim Preserve Tablo_J_F(1 To Compteur) As Date
                    Tablo_J_F(Compteur) = Date_en_Cours
                End If
            Next Date_en_Cours
        Case 41 'Suisse
       
        Case Else
            Tab_Jours_Feries = Error(5)
            Exit Function
        End Select
        Tab_Jours_Feries = IIf(Test_Journee, Jour_Ferie, Tablo_J_F)
    Else
        Tab_Jours_Feries = Error(5) 'remplacer ligne par Err.Raise 5 pour générer une erreur argument non valide
    End If
End Function
Re,

Super merci, j'ai hâte de bosser dessus.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia