Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True 'Permet de ne pas séléctionner la cellule
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("Jours_Livraisons").Offset(, 2).Resize(, 7)) Is Nothing Then ' Si la cellule est dans La colonne (K)
Target = IIf(Target = "þ", "o", "þ") 'si Cellule = "þ" alors coché sinon décoché
'Si la cellule est cochée
Dim fournisseur As String, Produit As String, idxJour As Variant, colFour As Long, idxLig As Variant
'Récupération des éléments necessaires
fournisseur = Cells(Target.Row, Range("Jours_Livraisons").Column)
Produit = Cells(Target.Row, Range("Jours_Livraisons").Column + 1)
'idxJour servira à retrouver le premier jour de l'année
idxJour = Array(vbMonday, vbTuesday, vbWednesday, vbThursday, vbFriday, vbSaturday, vbSunday)(Target.Column - Range("Jours_Livraisons").Column - 2)
With Sheets("Calendrier Livraisons")
On Error Resume Next
'Chercher la colonne correspondant au fournisseur
colFour = .Rows(5).Find(what:=fournisseur, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, MatchCase:=False).Column
'Si elle n'est pas trouvée on va tenter de la créer
If colFour = 0 Then
colFour = .Cells(5, .Columns.Count).End(xlToLeft).Column + 1
.Cells(5, colFour) = fournisseur
End If
On Error GoTo 0
If colFour = 0 Then
MsgBox "Le fournisseur : '" & fournisseur & "' n'a pas été trouvé ni pu être créé!", vbExclamation, "Fournisseur introuvable"
Exit Sub
End If
'Cherche l'indes de range de la date correspondant au premier jour dans l'année (lundi à dimanche)
idxJour = Application.Match(CLng(PremierLD(idxJour, , Params.Range("An_N"))), Sheets("Calendrier Livraisons").Range("Les_Dates"), 0)
Dim i As Integer
'Balaie la plage des dates
For i = idxJour To .Range("Les_Dates").Rows.Count Step 7
'Si la cellule de la colonne 1 contient une valeur pouvant être interprétée comme une date
If IsDate(.Cells(5 + i, 1)) Then
'Si la date n'est pas férié
If Application.CountIf(Params.Range("Dates_Fériés"), .Cells(5 + i, 1)) = 0 Then
'On place le produit dans la ligne et la colonne idoines
With .Cells(5 + i, colFour)
If Target = "þ" Then
.Value = Produit
Else
If Target = Produit Then .ClearContents
End If
End With
End If
End If
Next
End With
Cancel = True
End If
End Sub