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
| Sub ClicBoutons() ' Affecter cette macro à tous les boutons
Dim BtnCapt As String, Position As Byte
BtnCapt = Replace(ActiveSheet.Buttons(Application.Caller).Caption, vbLf, "") 'Récup du titre du bouton cliqué
Btn_Caption = Array("PLD", "DJM", "DJA", "OPEX", "OPINT", "TERR", "STAGE", "SERV", "RECON", "DESER", "PATC") 'Array des titres des boutons
Position = Application.Match(BtnCapt, Btn_Caption, 0) 'on cherche la position
'MsgBox Parametres & " - " & Btn_Caption(Parametres - 1)
FerieSamDim Position 'on envoie le résultat dans les Sub FerieSamDim dont on active le process
End Sub
Sub FerieSamDim(Position As Byte)
Dim Ferie As Variant
'Ici les paramètres 3 Arrays permettant de mettre la Valeur du texte, la couleur de fond et la couleur du texte
Valeur = Array("PLD", "DJM", "DJA", "OPEX", "OPINT", "TERR", "STA", "SERV", "RECON", "DESER", "PATC")
FondCell = Array(RGB(255, 102, 0), RGB(255, 192, 0), RGB(255, 255, 0), RGB(0, 32, 96), RGB(0, 112, 192), RGB(219, 238, 243), RGB(146, 208, 80), RGB(112, 48, 160), RGB(151, 72, 7), RGB(0, 0, 0), RGB(255, 0, 0))
CoulFont = Array(1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2)
'Création d'un Array récupérant les jours feriés (Bien les formules mettant le jours feriés automatiquement qq soit l'année, j'ai déjà fait cela)
Ferie = Application.Transpose(Sheets("Jours feriés").Range(Sheets("Jours feriés").Cells(7, 4), Sheets("Jours feriés").Cells(Rows.Count, 4).End(xlUp)))
SamDim = Array(6, 7) 'Array : valeur du samedi et dimanche
With Selection
Set JoursSelect = Range(Cells(10, .Column), Cells(10, .Column + .Columns.Count - 1))
For Each Jour In JoursSelect
J_Ferie = Application.Match(Jour, Ferie, 0) 'Pour vérification des jours feriés
J_SamDim = Application.Match(Weekday(Jour, vbMonday), SamDim, 0) 'Pour vérification des Samedi Dimanche
If Not IsError(J_Ferie) Or Not IsError(J_SamDim) Then 'On teste les jours
MsgBox "Jour non valide sélectionné, " & vbCrLf & _
"modifier la sélection", vbExclamation
Set JoursSelect = Nothing: Exit Sub
End If
Next
'Si pas de message, on récupère les valeurs dans les 3 Arrays
.Value = Valeur(Position - 1)
.Interior.Color = FondCell(Position - 1)
With .Font: .ColorIndex = CoulFont(Position - 1): .Size = 7: End With
End With
End Sub |
Partager