Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim region As Variant
Cancel = True
If Target.Row = 1 Then Exit Sub
With Calendar
Select Case Target.Column
Case 1: Target = Calendar.ShowX(Target(1), 2, 0, 0): ' region = 0 ou "US" Etats Unis
Case 2: Target = Calendar.ShowX(Target(1), 2, 0, 1): ' region = 1 ou "FR" France
Case 3: Target = Calendar.ShowX(Target(1), 2, 0, 2): ' region = 2 ou "CA" Canada
Case Else: .ShowX Target(1), 0, 2 'automatique region
End Select
End With
'Unload Calendar'pour ceux qui souhaitent décharger la mémoire utilisée par le userform en position hide
End Sub
hoh je crois que j'ai toutj'attends la suite de tes recherches
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Target(1).Row = 1 Then Exit Sub
Select Case Target.Column
Case 1: Target = Calendar.ShowX(Target(1), 2, 0, 0): ' region = 0 ou "US" Etats Unis
Case 2: Target = Calendar.ShowX(Target(1), 2, 0, 1): ' region = 1 ou "FR" France
Case 3: Target = Calendar.ShowX(Target(1), 2, 0, 2): ' region = 2 ou "CA" Canada
Case Else: Target = Calendar.ShowX(Target(1), 0, 2): 'automatique region
End Select
'Unload Calendar'plus besoins
End Sub
'evenement unique pour 42 boutons
Private Sub bout_Click(): putDate Bout: End Sub
Public Sub putDate(ByVal q As Object)
Dim Forme
Forme = Switch(Calendar.region = 0, "mm/dd/yyyy", Calendar.region = 1, "dd/mm/yyyy", Calendar.region = 2, "yyyy-mm-dd")
If TypeName(Obj) = "Range" Then
Calendar.valeur = Format(CDate(DateSerial(Calendar.Cbyear.Value, Calendar.Cbmonth.ListIndex + 1, q.Caption)), Forme)' je pourrais tout aussi bien envoyer dateserial ici car mes colonnes sont formatées
Else
Calendar.valeur = Format(DateSerial(Calendar.Cbyear.Value, Calendar.Cbmonth.ListIndex + 1, q.Caption), Forme)
End If
Calendar.Hide 'le unload se fait ailleurs
End Sub