XL 2019 VBA : tester une date

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour !

Je voudrais faire un test pour voir si la date entrée est bien une date au format dd/mm/yyyy mais, étant débutante, je ne sais pas comment faire.
Je commence le code comme :

VB:
Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
  
    If Not Intersect(Target, Range("Ma_date")) Is Nothing Then
        Call CLICK_INFOS
    End If
End Sub


Merci beaucoup pour votre aide !
 
Bonjour.
Vous feriez mieux je crois de tester le type de donnée de la valeur de la cellule, ce qui est complètement différent de ce qu'on y voit.
Son format d'affichage n'a rien à voir avec ça, et n'est pas appliqué si sa valeur n'est pas numérique.
Par contre VarType(Target.Value) = vbDate, là oui, c'est vrai si on n'a modifié qu'une seule cellule et si du coup sa valeur est demeurée ou devenue une date.
 
Bonjour.
Vous feriez mieux je crois de tester le type de donnée de la valeur de la cellule, ce qui est complètement différent de ce qu'on y voit.
Son format d'affichage n'a rien à voir avec ça, et n'est pas appliqué si sa valeur n'est pas numérique.
Par contre VarType(Target.Value) = vbDate, là oui, c'est vrai si on n'a modifié qu'une seule cellule et si du coup sa valeur est demeurée ou devenue une date.
Merci, ça marche, mon code :
VB:
    Private Sub Worksheet_Change(ByVal Target As Range)
 
    If Not Intersect(Target, Range("Ma_date")) Is Nothing And VarType(Target.Value) = vbDate Then
        Call CLICK_INFOS_OPOC
    End If
    If Not Intersect(Target, Range("Ma_date")) Is Nothing And VarType(Target.Value) <> vbDate Then
       MsgBox "Entrez la date en format jj/mm/aaaa"
    End If
    End Sub

Est-ce que c'est correct ?
 
Oui, pratiquement. Mais j'aurais peut être plutôt écrit :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address <> Range("Ma_date").Address Then Exit Sub
   If VarType(Target.Value) = vbDate Then
      Call CLICK_INFOS_OPOC
   Else
      MsgBox "Entrez la date en format jj/mm/aaaa", vbExclamation, "Vérification"
      End If
   End Sub
 
Oui, pratiquement. Mais j'aurais peut être plutôt écrit :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address <> Range("Ma_date").Address Then Exit Sub
   If VarType(Target.Value) = vbDate Then
      Call CLICK_INFOS_OPOC
   Else
      MsgBox "Entrez la date en format jj/mm/aaaa", vbExclamation, "Vérification"
      End If
   End Sub
Merci, ça marche !
Pourriez-vous m'expliquer cette fonction :If Target.Address <> Range("Ma_date").Address
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
230
Réponses
4
Affichages
358
Réponses
8
Affichages
442
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
Réponses
4
Affichages
143
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
246
Réponses
2
Affichages
400
Retour