Bonsoir,
Serait-il possible, sur la feuille "Paramètres" de désactiver ou activer le "Sub M_PreBarrage" du module1 ci-dessous à l'aide d'un bouton ==>
Le code VBA ==>
Sub M_PreBarrage(Sh As Worksheet)
Dim c, Arr, TBL, bPM, bImPair, i, j, j1, iWeekday, r
If Not Sh.Name Like "*## *##" Then Exit Sub 'nom de la feuille ressemble à cela
TBL = Range("t_Semaine").Value2 'TS avec les propriétés des tâches
With Sh
.Unprotect
Set c = .Range("C2:AF41") 'votre plage
Arr = c.Value2 'lire vers matrice
For i = 3 To UBound(Arr) Step 4 'les lignes avec les tâches
For j = 1 To UBound(Arr, 2) 'boucler horizontal
If Len(Arr(i, j)) > 0 Then 'tâche connu
j1 = Int((j - 1) / 3) * 3 + 1 'colonne avec sa date
bPM = (j1 Mod 6 = 4) 'c'est l'après-midi
Jour = Arr(i - 1, j1) 'quel jour ?
iWeekday = WorksheetFunction.Weekday(Jour, 2) 'n° weekday
bImPair = (WorksheetFunction.IsoWeekNum(Jour) Mod 2 = 1) 'semaine impaire ?
r = -30 * bImPair + (iWeekday - 1) * 6 - 3 * bPM + 1 + (j - j1) 'ligne dans t_semaine
'Debug.Print i, j, r, Tbl(r, 3), Arr(i, j)
If TBL(r, 3) = Arr(i, j) Then 'normallement ces 2 sont égal
If TBL(r, 6) = 1 Then c.Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlDot 'si on demande "pré-barrage", alors on le fait
Else
MsgBox "impossible"
End If
End If
Next
Next
End With
End Sub
________________________________________________________
D'autre part, je souhaiterai que le barrage des cellules ne soient plus du type d'une seule diagonale vers la droit, en pointillé mais plutôt un barrage en croix en gras...
Merci beaucoup
Bonne soirée