XL 2010 formule si selon jour de semaine

  • Initiateur de la discussion Initiateur de la discussion rodo77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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:
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 ?
 
Salut Etoto

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

Bien cordialement, @+
 
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:
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
 
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:
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
230
Réponses
12
Affichages
165
Réponses
2
Affichages
109
Réponses
6
Affichages
267
  • Question Question
Microsoft 365 Formule
Réponses
4
Affichages
162
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
238
Réponses
7
Affichages
914
Retour