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

Macros et VBA Excel Discussion :

Excel : Nombre de jours ouvrés dans un mois


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut Excel : Nombre de jours ouvrés dans un mois
    Bonjours

    je souhaite calculer automatiquement le nombre de jours ouvrés (c'est à dire tous les jours sauf les WE) d'un mois.
    Existe t'il un objet qui face référence à un calendrier ou autre chose de réalisable?
    Note : les jours ouvrés ne sont jamais les mêmes chaque mois et années!
    Pti Pié

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 99
    Points : 110
    Points
    110
    Par défaut
    Je ne crois pas qu'il y a une fonction intégrée qui permette de resortir cela, par contre, c'est facilement réaliseable en utilisant la fonction weekday.

    ++

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai ça, si ça peut t'aider... Réalise un calendrier mensuel par feuille de calcul des jours ouvrés - les jours fériés

    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
    Sub CalendrierJoursOuvrés()
    Dim ok As Boolean, ko As Boolean
    Dim i As Integer, j As Integer, L As Integer, DateRef As Date
        JoursFériés = Array("28 mars 2005", "5 mai 2005", "14 juillet 2005", "15 août 2005", "1 novembre 2005", "11 novembre 2005")
        NomFeuille = Format(DateSerial(2005, 1, 1), "mmmm") 'Feuille janvier
        ActiveSheet.Name = NomFeuille
        j = 1
        For i = 1 To 365
            DateRef = DateSerial(2005, 1, i)
            If Format(DateRef, "dd") = "01" And i > 31 Then
                L = 1
                ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count) 'MoisPrécédent
                NomFeuille = Format(DateRef, "mmmm")
                ActiveWorkbook.ActiveSheet.Name = NomFeuille
            End If
            ko = False
            For k = 1 To UBound(JoursFériés)
                ko = ko Or InStr(Format(CDate(DateRef), "dd mmmm yyyy"), JoursFériés(k)) <> 0
                If ko Then Exit For
            Next k
            ok = Format(WeekDay(DateRef), "dddd") <> "samedi"
            ok = ok And Format(WeekDay(DateRef), "dddd") <> "dimanche"
            If ok And Not ko Then
                L = L + 1
                Worksheets(NomFeuille).Cells(L, 1).Formula = Format(DateRef, "dddd dd mmmm yyyy")
                j = j + 1
            End If
        Next
    End Sub
    La suite (absente) ajoute les heures dans les colonnes

    Tu peux également utiliser les fonctions Excel - Je cherche la syntaxe et te la mettrai

    Désolé, j'ai la syntaxe mais si elle fonctionne pour des fonctions simples d'Excel telle...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        MsgBox WorksheetFunction.Rept("z", 10) & "ou !"
    ... elle ne marche pas pour NB.JOURS.OUVRES()

    Bonne chance

    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Tu peux utiliser cette fonction.(0 représente un jour non ouvré, 1 un jour ouvré)
    code]
    Function NbreJoursOuvrés(Date1, Date2)
    Dim tJour(7) As String
    Dim vNbJours As Integer, i
    tJour(1) = 0 'Dimanche
    tJour(2) = 1 'Lundi
    tJour(3) = 1 'Mardi
    tJour(4) = 1 'Mercredi
    tJour(5) = 1 'Jeudi
    tJour(6) = 1 'Vendredi
    tJour(7) = 0 'Samedi
    For i = Date1 To Date2
    If tJour(WeekDay(i)) = 1 Then
    vNbJours = vNbJours + 1
    End If
    Next
    NbreJoursOuvrés = vNbJours
    End Function
    [/Code]
    Pour l'essayer, par exemple en A1 11/12/2005, en B1 21/12/2005 et en C1 = NbreJoursOuvrés(A1;B1)

    jpleroisse

  5. #5
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    Cette dernière fonctions me semble vraiment interréssante
    Mais en fait, cette allusion à la création d'une fonction m'a fait cherché dans les fonctions de Excel et je suis tombé sur :

    =NB.JOURS.OUVRES(date_départ;date_fin;matrice_jours_feriés)


    Donc c'est bon mon problème est résolu
    Merci bien pour votre coup de main!
    Pti Pié

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 99
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par repié
    Donc c'est bon mon problème est résolu
    Merci bien pour votre coup de main!
    Pense à mettre le Tag Résolu (en fin de page)

    A plus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Calcul du nombre de jours ouvrés par mois entre deux dates
    Par lumpys dans le forum VBA Access
    Réponses: 7
    Dernier message: 11/04/2014, 09h59
  2. Nombre de jours ouvrés mois apres mois
    Par krof77 dans le forum Excel
    Réponses: 6
    Dernier message: 29/11/2012, 04h25
  3. Réponses: 5
    Dernier message: 17/03/2010, 17h11
  4. Nombre de jours ouvrés d'un mois
    Par dav_e77 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 29/11/2006, 13h53
  5. Fonction qui compte le nombre de jours ouvrés par mois
    Par griese dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/07/2006, 15h32

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