Problème de focus dans une Function

blord

XLDnaute Impliqué
Bonjour à tous,

Je me suis créé une petite Function qui permet de vérifier si la saisie faite dans un textbox est une date.
L'utilisateur saisi la date sous le format AAAAMMJJ sans séparateur dans le textbox.
La Function convertit le contenu du textbox au format AAAA-MM-JJ et vérifie s'il s'agit d'une date valide.

Jusque-là pas de problème.

Mon problème survient si la date n'est pas valide, suite au message, j'aimerais que le focus revienne sur le textbox de la date et non sur le prochain champ.

Merci pour votre aide....

blord
 

Pièces jointes

  • FonctionDate.xlsm
    18.4 KB · Affichages: 24

Caillou

XLDnaute Impliqué
Re : Problème de focus dans une Function

Bonjour,

Essayes ceci :
Code:
Private Sub TextBoxDDN_BeforeUpdate(ByVal Cancel As MSFORMS.ReturnBoolean)
'Converti le textbox en format date aaaa-mm-jj si la date est valide
    Dim LaDate As String
    LaDate = TextBoxDDN.Value
    If Not Verif_Date(LaDate) Then
      Me.TextBoxDDN.SetFocus
      Cancel = True
    End If
    Me.TextBoxDDN.Value = LaDate
End Sub


Public Function Verif_Date(ByRef LaDate As String) As Boolean
'Cette fonction a pour but de vérifier si la date saisie est une vraie date
'On remplace les tirets par un espace (étape nécéssaire s'il s'agit d'une modification)
    LaDate = Replace(LaDate, "-", "")
    
'On remet les tirets entre les valeurs saisie
    LaDate = Left(LaDate, 4) & "-" & Mid(LaDate, 5, 2) & "-" & Right(LaDate, 2)
    
'On vérifie si la date saisie est une vraie date
    If IsDate(LaDate) = False Then
        MsgBox "Date invalide", vbOKOnly + vbInformation
        LaDate = ""
        Verif_Date = False
    Else
        Verif_Date = True
    End If
End Function
Caillou
 

blord

XLDnaute Impliqué
Re : Problème de focus dans une Function

Bonjour Caillou,

Merci beaucoup pour ton aide, ça fonctionner correctement.
La seule chose que j'ai ajoutée, c'est une vérification si le champ est vide, car le message d'erreur était récurrent....

blord
 

job75

XLDnaute Barbatruc
Re : Problème de focus dans une Function

Bonjour blord, Caillou,

Ou avec un 2ème argument pour la fonction :

Code:
Private Sub TextBoxDDN_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Converti le textbox en format date aaaa-mm-jj si la date est valide
    Dim LaDate As String, c As Boolean
    LaDate = TextBoxDDN
    Verif_Date LaDate, c
    TextBoxDDN = LaDate
    Cancel = c
End Sub

Public Function Verif_Date(LaDate As String, c As Boolean)
'Cette fonction a pour but de vérifier si la date saisie est une vraie date
'On remplace les tirets par un espace (étape nécéssaire s'il s'agit d'une modification)
    LaDate = Replace(LaDate, "-", "")
    
'On remet les tirets entre les valeurs saisie
    LaDate = Left(LaDate, 4) & "-" & Mid(LaDate, 5, 2) & "-" & Right(LaDate, 2)
    
'On vérifie si la date saisie est une vraie date
    If Not IsDate(LaDate) Then
        MsgBox "Date invalide", vbOKOnly + vbInformation
        LaDate = ""
        c = True
    End If
End Function
A+
 

Discussions similaires

Réponses
2
Affichages
279