XL 2010 Is Not Nothing ne marche pas

chakershaker

XLDnaute Junior
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
 

Pièces jointes

  • condition1.xlsm
    22.3 KB · Affichages: 18
Solution
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...

vgendron

XLDnaute Barbatruc
Bonjour

un essai ici:
VB:
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
 

sousou

XLDnaute Barbatruc
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

Pièces jointes

  • condition1.xlsm
    23.3 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
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.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia