Vlookup quand on recherche une date

Airone784

XLDnaute Occasionnel
Bonsoir,

Voici mon petit bout de code pour lequel j'ai un problème :

Dim cible As Date, valtrouve As Integer

Code:
cible = UserForm1.TextBox1.Value
valtrouve = Application.WorksheetFunction.VLookup(cible, Range("A4:B100"), 2, 0)
MsgBox valtrouve & " est la valeur trouvée!"


Ce code s'éxecute dans l'évènement userform_initialise. Dans ma textbox s'affiche la date du jour sous le format JJ/MM/AAAA.

Sauf que lorsque je cherche une date dans la colonne A qui contient que des dates, j'ai l'impression qu'Excel n'arrive pas à savoir que c'est une date que je cherche à trouver. En effet, si dans ma textbox je saisie une valeur (ex : 1800) et mets dim cible as integer à la place de date, et que j'ai 1800 dans ma colonne A, il me renvoit bien cette fois la valeur en colonne B pour la ligne où il y a 1800.

Je vous joins un exemple simplifié de mon fichier et donc du problème.

Merci d'avance pour votre aide.
 

Pièces jointes

  • vlookup_date.xlsm
    14.8 KB · Affichages: 27

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Vlookup quand on recherche une date

Bonsoir,

Code:
Private Sub CommandButton1_Click()
  Dim cible As Long, valtrouve As Integer
  If IsDate(Me.TextBox1) Then
    cible = CDate(Me.TextBox1)
    tmp = Application.VLookup(cible, Range("A4:B" & [a65000].End(xlUp).Row), 2, 0)
    If Not IsError(tmp) Then
       MsgBox tmp & " est la valeur trouvée!"
    Else
       MsgBox "inconnu"
    End If
  End If
End Sub

ou

Code:
Private Sub CommandButton1_Click()
  Dim cible As Long, valtrouve As Integer
  If IsDate(Me.TextBox1) Then
    cible = CDate(Me.TextBox1)
    p = Application.Match(cible, [A:A], 0)
    If Not IsError(p) Then
       MsgBox Cells(p, 2) & " est la valeur trouvée!"
    Else
       MsgBox "inconnu"
    End If
  End If
End Sub

JB
 

Pièces jointes

  • vlookup_date.xls
    34.5 KB · Affichages: 29
Dernière édition:

Airone784

XLDnaute Occasionnel
Re : Vlookup quand on recherche une date

Bonjour à tous,

Merci beaucoup Boisgontier pour le coup de main cela fonctionne très bien. Par contre je m'étonne qu'il faille tester le fait que textbox1 soit une date pour que le code fonctionne puisque dans mon code d'origine textbox1 est forcément une date puisque :

Code:
TextBox1 = Format(Now + 30, "DD/MM/YYYY")

Et je ne comprends pas pourquoi parfois il faut mettre worksheetfunction.vlookup et des fois juste Application.vlookup. Le problème arrive aussi avec match d'ailleurs. Y a-t-il une règle de fonctionnement??
Si oui, je suis preneur d'infos.

Merci encore et bonne journée.
 

Discussions similaires

Réponses
4
Affichages
491

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec