Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Bonjour, j'ai besoin d'une fonction qui teste si la valeur de la date introduite pour faire la saisie est existante ou pas pou éviter le doublon. j'ai essayé (Is Not Nothing) mais il ya quelque chose qui ne marche pas y a-t-il de solutions et merci d'avance
Bonjour chakershaker, vgendron, sousou,
Tout est mélangé, par ex vous testé Trouve avant de le calculer.
D'autre part vous ne vérifiez pas si la donnée entrée est une date.
Enfin la donnée issue d'un TextBox est un texte. Il faut donc le convertir en date avant la recherche.
Un PJ un essai avec :
VB:
Private Sub CommandButton1_Click()
Dim Trouve As Range
With Sheets("feuil2")
If IsDate(TextBox1) = True Then ' Vérifie si la donnée est une date
If Application.CountIf(.Range("f:f"), CDate(TextBox1)) > 0 Then ' Vérifie si date présente
MsgBox "trouvé"
TextBox1.Value = ""
Me.Hide
Else
MsgBox "non trouvé"
End If
Else...
Private Sub CommandButton1_Click()
Dim Trouve As Range
With Sheets("feuil2")
Set Trouve = .Columns("f:f").Find(CDate(TextBox1))
If Not Trouve Is Nothing Then
MsgBox "la date: " & TextBox1 & " a été trouvée en ligne: " & Trouve.Row
Me.Hide
TextBox1.Value = ""
Else
MsgBox "non trouvé"
End If
End With
End Sub
bonjour
Tu n'utilise pas correctement la fonction, de plus tu ne teste pas si c'est une date qui est saisie.
regarde avec ceci
Private Sub CommandButton1_Click()
If IsDate(Me.TextBox1) = False Then MsgBox "Ceci n'est pas une date": Exit Sub
madate = CDate(Me.TextBox1)
With Sheets(2).Columns(6)
Set Trouve = .Find(madate)
If Trouve Is Nothing Then MsgBox "Date non trouvée": Exit Sub
MsgBox "la date est: " & madate
End With
End Sub
Bonjour chakershaker, vgendron, sousou,
Tout est mélangé, par ex vous testé Trouve avant de le calculer.
D'autre part vous ne vérifiez pas si la donnée entrée est une date.
Enfin la donnée issue d'un TextBox est un texte. Il faut donc le convertir en date avant la recherche.
Un PJ un essai avec :
VB:
Private Sub CommandButton1_Click()
Dim Trouve As Range
With Sheets("feuil2")
If IsDate(TextBox1) = True Then ' Vérifie si la donnée est une date
If Application.CountIf(.Range("f:f"), CDate(TextBox1)) > 0 Then ' Vérifie si date présente
MsgBox "trouvé"
TextBox1.Value = ""
Me.Hide
Else
MsgBox "non trouvé"
End If
Else
MsgBox "La donnée entrée n'est pas une date"
TextBox1.Value = ""
End If
End With
End Sub
Merci beaucoup pour votre aide. j'ai pas fait attention du test date. j'ai copier et adapter le code de cet exemple dans mon fichier excel. ça bien marché. Merci tout le monde encore une fois.
Bonjour.
Comme je l'ai déjà souvent dit, une expression telle que IsDate(TextBox1) = True est complètement idiote dans le cas où, comme ici, l'expression de gauche est toujours un Boolean.
Déjà les expressions Boolean ont leurs propres opérateurs de comparaison Eqv, Xor, And et Or, les deux derniers n'ayant pas d'équivalent dans les operateurs de comparaison entre String notament (entre Long ils peuvent l'appliquer à l'ensemble de leurs bits).
Donc pour bien faire il faudrait préférer IsDate(TextBox1) Eqv True
Mais ça aussi c'est idiot parce que :
True Eqv True c'est True,
False Eqv True c'est False, et par conséquent
IsDate(TextBox1) Eqv True c'est simplemment IsDate(TextBox1) tout seul.
Bonjour Dranreb
"Idiot" m'a toujours paru condescendant.
Au vu du code de Chakershaker, il m' a semblé que "If IsDate(TextBox1) = True Then" était pédagogiquement plus explicite que "If IsDate(TextBox1) Then".
D'autant que ce n'est pas idiot, simplement c'est inutile. Ce qui est différent.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.