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

VBA Discussion :

[vba] jour férié


Sujet :

VBA

  1. #1
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut [vba] jour férié
    Bonjour !

    Je me suis fait beaucoup aider par un collègue pour ce code...

    Il me semble tout juste, mais quand je le lance, il ne me met pas les cellules des jours fériés en couleur, je voudrais savoir où il y aurait une erreur possible.

    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
    Function JourFerie(datetraitement As Date) As Boolean
     
    Dim Paques As String
    Dim Pentecote As String
    Dim Ascension As String
    Dim an As Integer
    Dim Mois As Integer
    Dim jour As Integer
    Dim i As Integer
    Dim j As Integer
     
        'partie pour retrouver paques, ascension et pentecote (jours feries non fixes)
        an = CInt(Mid(datetraitement, 7, 4))
        Mois = 3
        jour = 23 + modulo(19 * modulo(an, 19) + 24, 30) + modulo(2 * modulo(an, 4) + 4 * modulo(an, 7) + 6 * modulo(19 * modulo(an, 19) + 24, 30) + 5, 7)
        If jour / 31 > 1 Then
            Mois = Mois + 1
            jour = jour - 31
        End If
        Paques = Format(jour & "/" & Mois & "/" & an, "dd/mm/yyyy")
        jour = jour + 8
        Mois = Mois + 1
        If jour / 31 > 1 Then
            Mois = Mois + 1
            jour = jour - 31
        End If
        Ascension = Format(jour & "/" & Mois & "/" & an, "dd/mm/yyyy")
        jour = jour + 10
        If jour / 31 > 1 Then
            Mois = Mois + 1
            jour = jour - 31
        End If
        Pentecote = Format(jour & "/" & Mois & "/" & an, "dd/mm/yyyy")
     
        'comparaison avec les jours fériés français connus
        If CStr(datetraitement) = Paques Or CStr(datetraitement) = Ascension Or CStr(datetraitement) = Pentecote _
            Or CStr(Mid(datetraitement, 1, 5)) = "01/01" Or CStr(Mid(datetraitement, 1, 5)) = "01/05" Or CStr(Mid(datetraitement, 1, 5)) = "08/05" _
            Or CStr(Mid(datetraitement, 1, 5)) = "14/07" Or CStr(Mid(datetraitement, 1, 5)) = "15/08" Or CStr(Mid(datetraitement, 1, 5)) = "01/11" _
            Or CStr(Mid(datetraitement, 1, 5)) = "11/11" Or CStr(Mid(datetraitement, 1, 5)) = "25/12" Then
            JourFerie = True
     
            For i = 7 To i = 96
            For j = 1 To j = 23
            DocXL.Parent.Sheets.Cells(i, j).Font.Color = RGB(255, 0, 0)
     
            For j = DocXL.Parent.Cells(i, 1) To DocXL.Parent.Cells(i, 96) = ""
            Next
        Else
            JourFerie = False
        End If
     
        'je converti en date
        ferie = CDate(JourFerie) 
     
    End Function
    Merci d'avance ^^

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Par défaut
    If CStr(datetraitement) = Paques Or CStr(datetraitement) = Ascension Or CStr(datetraitement) = Pentecote _
    Or CStr(Mid(datetraitement, 1, 5)) = "01/01" Or CStr(Mid(datetraitement, 1, 5)) = "01/05" Or CStr(Mid(datetraitement, 1, 5)) = "08/05" _
    Or CStr(Mid(datetraitement, 1, 5)) = "14/07" Or CStr(Mid(datetraitement, 1, 5)) = "15/08" Or CStr(Mid(datetraitement, 1, 5)) = "01/11" _
    Or CStr(Mid(datetraitement, 1, 5)) = "11/11" Or CStr(Mid(datetraitement, 1, 5)) = "25/12" Then
    JourFerie = True

    For i = 7 To i = 96
    For j = 1 To j = 23
    DocXL.Parent.Sheets.Cells(i, j).Font.Color = RGB(255, 0, 0)

    For j = DocXL.Parent.Cells(i, 1) To DocXL.Parent.Cells(i, 96) = ""
    Next
    Else
    Il ne manquerait pas quelques NEXT pour tes boucles for ici ?
    et le dernier FOr j'ai du mal avec le = "" à la fin

  3. #3
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Et bien disons que ce dont tu as du mal, c'est ma ligne de code afin de la vider de ses valeurs, mais c'est vrai que l'on peut utiliser autre chose....

    C'est mieux ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     For i = 7 To i = 96
            For j = 1 To j = 23
            DocXL.Parent.Sheets.Cells(i, j).Font.Color = RGB(255, 0, 0)
     
            Range DocXL.Parent.Cells(i, j).Value = .SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
     
        Else
            JourFerie = False
        End If
        Next
        Next
     
        ferie = CDate(JourFerie)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Par défaut
    ca me plait plus mais tes 2 Next devraient être avant le Else

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Font.Color
    Moi, c'est celà qui m'interpelle !
    Sous VB, l'objet Font n'a pas de propriété Color
    On utiliserait ici la propriété ForeColor, tout simplement...
    Quel est l'équivalent sous VBA ? c'est là qu'il faut regarder.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Par défaut
    Citation Envoyé par jmfmarques
    Moi, c'est celà qui m'interpelle !
    Sous VB, l'objet Font n'a pas de propriété Color
    On utiliserait ici la propriété ForeColor, tout simplement...
    Quel est l'équivalent sous VBA ? c'est là qu'il faut regarder.
    docXL pour moi veut dire qu'il travaille sur une feuille Excel et là Font.Color existe selon moi

  7. #7
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Merci xblond, j'ai modifié.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Par défaut
    Tous tes problèmes sont réglés maintenant ?

  9. #9
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Non, il marche toujours pas le code des jours fériés, et mes autres problèmes ne sont toujours pas résolus...


  10. #10
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Un petit mot pour faire remonté ce topic, afin de peut être avoir une réponse, enfin si vous avez compris mon problème...

  11. #11
    Membre confirmé Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Par défaut
    essaye pluto ca pour mettre une cellule en couleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With (DocXL.Parent.Sheets.Cells(i, j).Interior)
                    .ColorIndex = 39
                    .Pattern = xlSolid
                End With
    en espérant que ca te dépannera!!

Discussions similaires

  1. weekend et jours fériés dans les dates VBA
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/05/2018, 20h43
  2. [Toutes versions] Déterminer la liste des jours fériés en France sans vba
    Par soscitoyen dans le forum Contribuez
    Réponses: 2
    Dernier message: 10/05/2013, 17h28
  3. Prendre en compte les jours fériés VBA
    Par CtrlCmpt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/03/2013, 18h16
  4. [Macro VBA] prenant en compte jours fériés et tranches horaires
    Par Xanthar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2009, 21h26
  5. Jours fériés
    Par djool dans le forum Access
    Réponses: 11
    Dernier message: 06/11/2004, 00h16

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