VBA : 1ere et dernière date du mois (ouvrés) [RESOLU]

Imer2007

XLDnaute Occasionnel
Bonjour à tous,

Je sèche actuellement sur un truc.
Dans un classeur, j'ai une colonne dans laquelle j'ai inscrit tous les jours de l'année 2012 (uniquement les jours ouvrés donc sans les samedi/dimanche et jours fériés).

Je viens de créer un userform dans lequel une combobox (liste déroulante qui s'appelle select_jour) récupère tous ces jours (via rowsource).

Je souhaiterais pouvoir activer deux cases à cocher sur ce userform :
1- première case à cocher si la date sélectionnée est le 1er jour ouvré du mois
2- deuxième case à cocher si la date sélectionnée correspond au dernier lundi du mois.

J'ai besoin de vos lumières parce que là, je sèche totalement !

J'ai déjà une partie plus 'facile', ou des sauvegardes sont actives le lundi et le jeudi :

Code:
Private Sub select_jour_Change()
' conversion pour afficher sous la forme jour date mois année, ex : lundi 2 janvier 2012
select_jour.Value = Format(select_jour.Value, "dddd d mmmm yyyy")

' splitte la variable pour n'avoir que le jour, ex : lundi
decoupe = Split(select_jour.Value, " ")
' récupération du nom du jour
jour = decoupe(0)
If jour = "lundi" Then
' sauvegardes activées le lundi
    coche_sauvegarde_hebdo.Enabled = True
    coche_sauvegarde_mensuelle.Enabled = True
    coche_rniam.Enabled = True
Else
    coche_sauvegarde_hebdo.Enabled = False
    coche_sauvegarde_mensuelle.Enabled = False
    coche_rniam.Enabled = False
End If
If jour = "jeudi" Then
' sauvegarde intranet active le jeudi uniquement
    coche_intranet.Enabled = True
Else
    coche_intranet.Enabled = False
End If
End Sub
 
Dernière édition:

Imer2007

XLDnaute Occasionnel
Re : VBA : 1ere et dernière date du mois (ouvrés)

Re,

J'ai suivi ton indication mais j'obtiens une erreur VB.
Erreur de compilation:
Membres de méthode ou de données introuvable.
Ci joint le fichier.
 

Pièces jointes

  • travaux-1.xls
    68.5 KB · Affichages: 58

Imer2007

XLDnaute Occasionnel
Re : VBA : 1ere et dernière date du mois (ouvrés)

Je viens de tilter... La date du jour c'est maintenant (27 juillet 2011).
Mon calendrier démarre au 1er janvier 2012.

La date ne faisant pas partie de ce calendrier, l'erreur ne viendrait-elle pas de là finalement ? ;)
 

KenDev

XLDnaute Impliqué
Re : VBA : 1ere et dernière date du mois (ouvrés)

Re,

Non, ça passe chez moi... Tu as omis de préciser que tu as modifié ton userform et que le combobox sel_jour n'existe plus... :rolleyes:Tous les codes précédents sont à reprendre.... Cordialement

KD
 

Imer2007

XLDnaute Occasionnel
Re : VBA : 1ere et dernière date du mois (ouvrés)

J'ai fais une modification et là ca marche (en tout cas pour aujourd'hui ^^)

Code:
Private Sub sel_jour_Change()
Dim Ligne As Long

' splitte la variable pour n'avoir que le jour
decoupe = Split(sel_jour.Value, " ")
' récupération du nom du jour
jour = decoupe(0)
If jour = "lundi" Then
' RNIAM et sauvegardes activées le lundi
    coche_sauvegarde_hebdo.Enabled = True
    coche_sauvegarde_mensuelle.Enabled = True
    coche_rniam.Enabled = True
Else
    coche_sauvegarde_hebdo.Enabled = False
    coche_sauvegarde_mensuelle.Enabled = False
    coche_rniam.Enabled = False
End If

If jour = "jeudi" Then
' sauvegarde intranet active le jeudi uniquement
    coche_intranet.Enabled = True
Else
    coche_intranet.Enabled = False
End If

' partie 1er jour du mois
' par défaut Omnivista et imprimantes sont décochés
coche_omnivista.Enabled = False
coche_imprimantes.Enabled = False
Sheets("Calendrier").Activate
If sel_jour.Value <> 0 Then
    Ligne = Recherche(sel_jour.Text, 1)
    'si le jour précédent le jour sélectionné est inférieur à celui-ci
    'et si le jour suivant le jour sélectionné est supérieur à celui-ci
    ' c'est qu'on est en début de mois
    If Val(decoupe(1)) < Day(Worksheets("Calendrier").Cells(Ligne + 1, 1)) And Val(decoupe(1)) < Day(Worksheets("Calendrier").Cells(Ligne - 1, 1)) Then
        coche_omnivista.Enabled = True
        coche_imprimantes.Enabled = True
    End If
Else
    coche_omnivista.Enabled = True
    coche_imprimantes.Enabled = True
End If
' fin partie 1er jour du mois

' partie dernier lundi du mois
Set rg = Worksheets("Calendrier").Cells(Ligne + 2, 1)
coche_sauvegarde_mensuelle.Enabled = False
If WorksheetFunction.Weekday(rg) = 2 Then
    Select Case Month(rg)
        Case 1, 3, 5, 7, 8, 10, 12
            If Day(rg) > 24 Then
                coche_sauvegarde_mensuelle.Enabled = True
            End If
        Case 4, 6, 9, 11
            If Day(rg) > 23 Then
                coche_sauvegarde_mensuelle.Enabled = True
            End If
        Case 2
            If Year(rg) Mod 4 = 0 Then
                If Day(rg) > 22 Then
                    coche_sauvegarde_mensuelle.Enabled = True
                End If
            Else
                If Day(rg) > 21 Then
                    coche_sauvegarde_mensuelle.Enabled = True
                End If
            End If
    End Select
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510