Microsoft 365 UserForm calendrier ne pas pouvoir en sortir si pas de date sélectionnée

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous :)

Je bute encore sur un code que je n'arrive pas à FAIRE.
Je voudrais "NE PAS POUVOIR SORTIR SI PAS DE DATE SELECTIONNEE"
Mon contexte :
Pour obliger à sélectionner une date de rappel, je souhaite qu'on ne puisse pas sortir si pas de date sélectionnée = seule sortie possible, la sélection d'une date.
Pour arriver au calendrier, on clique dans la colonne "L", on affecte en sélectionnant "A Rappeler" (le 1er en haut du déroulant) et le calendrier s'affiche.

J'ai tenter plusieurs code dont celui ci-dessous :
VB:
Private Sub ButtonOK_Click()
If Date = TODAY Then
'If Date = .FormulaR1C1 = "=TODAY()" Then
MsgBox ("Vous devez sélectionner une date de Rappel !")
Exit Sub
Else
ActiveCell = CalendrierDateSELECT: Unload Me
End If
End Sub
Sans succès Grrr !!! :mad:
Pourriez-vous m'aider ?

En cas, je joins mon fichier test et le fichier qui fonctionne.
Un grand merci à tous,
:)
 

Pièces jointes

  • sortie UF test.xlsm
    92.2 KB · Affichages: 2
Solution
Salut Lionel, le code ci-dessous devrait faire l'affaire :
VB:
Private Sub ButtonOK_Click()
    If CalendrierDateSELECT <= Date Then
        MsgBox ("Vous devez sélectionner une date de Rappel !")
    Else
        ActiveCell = CalendrierDateSELECT
        Unload Me
    End If
End Sub

fanch55

XLDnaute Barbatruc
Salut Lionel, le code ci-dessous devrait faire l'affaire :
VB:
Private Sub ButtonOK_Click()
    If CalendrierDateSELECT <= Date Then
        MsgBox ("Vous devez sélectionner une date de Rappel !")
    Else
        ActiveCell = CalendrierDateSELECT
        Unload Me
    End If
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-fanch55 :)
Ton code est nickel mais j'avais omis une autre situation :

Ce que je voudrais :
1 - Si clic dans une cellule de la colonne "L" (Cells(ActiveCell.Row, 13)) = ton code s'éxécute et bloque si pas de date sélectionnée,
2 - Si clic dans une cellule de la colonne "O" (Cells(ActiveCell.Row, 15)) = la possibilité est laissée de ne pas sélectionner de date et le calendrier se ferne.

J'ai tenté de bidouiller et j'en suis à ce code :
VB:
Private Sub ButtonOK_Click()
    If ActiveCell = Cells(ActiveCell.Row, 13) Or ActiveCell = Cells(ActiveCell.Row, 15) Then
        If ActiveCell = Cells(ActiveCell.Row, 15) And CalendrierDateSELECT <= Date Then
            Unload Me
            Cells(ActiveCell.Row, 5).Select
            Application.EnableEvents = True
            Application.ScreenUpdating = True
            Cells(ActiveCell.Row, 15) = ""
        End If
        If ActiveCell = Cells(ActiveCell.Row, 13) And CalendrierDateSELECT <= Date Then
            MsgBox ("Vous devez sélectionner une date de Rappel !")
        Else
            ActiveCell = CalendrierDateSELECT
            Unload Me
        End If
    End If
End Sub
Mais ça ne marche pas ol :mad:
tu aurais le bon code ?
Je remets le fichier avec juste ton code ci-dessus inclus.
Voudrais-tu encore m'aider ?
UN re-Grand merci à toi...
:)
 

Pièces jointes

  • sortie UF test.xlsm
    86.8 KB · Affichages: 6
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re :)
J'en suis là :
VB:
Private Sub ButtonOK_Click()
    If ActiveCell.Address = Cells(ActiveCell.Row, 15) And CalendrierDateSELECT <= Date Then
        Unload Me
        Cells(ActiveCell.Row, 5).Select
        Application.EnableEvents = True
        Application.ScreenUpdating = True
        Cells(ActiveCell.Row, 15) = ""
    End If

    If ActiveCell.Address = Cells(ActiveCell.Row, 13) Then
        If CalendrierDateSELECT <= Date Then
            MsgBox ("Vous devez sélectionner une date de Rappel !")
        Else
            ActiveCell = CalendrierDateSELECT
            Unload Me
        End If
    End If
End Sub
Mais ça veut pas fonctionner
Sniff....
:)
 

fanch55

XLDnaute Barbatruc
Bonjour,
Déclaration d'une variable publique de type range dans le module CroixFormulaire .
VB:
Option Explicit
...
...
Public SelCell As Range
Modification de Worksheet_SelectionChange de la feuille Répondeurs pour assigner la cellule cliquée à la variable publique .
Code:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
...
Set SelCell = R
    If Not Intersect(R, Range("l6:l12")) Is Nothing And R.Count = 1 Then
...
Modification de l'initialize de l'userform fm_CalendrierCellMinMax pour neutraliser la croix de fermeture sans choix uniquement si la colonne est "L"
VB:
Private Sub UserForm_Initialize() 'place userf aux environs de la cellule
    If SelCell Is Nothing Then Set SelCell = ActiveCell
    If SelCell.Column = Columns("L").Column Then
        ' on neutralise la croix de fermeture
        hwnd = FindWindowA("Thunder" & _
               IIf(Application.Version Like "8*", "X", "D") & "Frame", _
               Me.Caption)
        SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
    End If
....
....
End Sub
 

Pièces jointes

  • sortie UF test.xlsm
    91.7 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
311 732
Messages
2 081 995
Membres
101 857
dernier inscrit
mt60400