Fonction recherche en VBA

Bonjour à tous,

Je n'arrive toujours pas à cerner correctement ce code

si c'est du texte
lig = .Range("Aa3:aa" & .Range("Aa" & Rows.Count).End(xlUp).Row).Find(ComboBoxDte, SearchOrder:=xlByColumns).Row
si c'est une date
lig = .Range("Aa3:Aa" & .Range("Aa" & .Rows.Count).End(xlUp).Row).Find(CStr(ComboBoxDte.Value), LookIn:=xlValues, SearchOrder:=xlByColumns).Row
si c'est un chiffre
lig = .Range("Aa3:Aa" & .Range("Aa" & .Rows.Count).End(xlUp).Row).Find(CDate(ComboBoxDte.Value), LookIn:=xlValues, SearchOrder:=xlByColumns).Row

J'ai essayé les 3 solutions sur les 2 premiers j'ai une erreur sur .range

sur le 3ème j'ai l'erreur sur .Rows.

Y a t-il une solution plus simple ou pouvez-vous attirer mon attention pourquoi l'erreur existe.

Amicalement

Noel

Bonjour,

J'aime bien celle là

si c'est un chiffre
lig = .Range("Aa3:Aa" & .Range("Aa" & .Rows.Count).End(xlUp).Row).Find(CDate(ComboBoxDte.Value), LookIn:=xlValues, SearchOrder:=xlByColumns).Row

Rien ne te gène... "Si c'est un chiffre" ... CDate

Tu as une inversion de code entre Chiffre et Date

Ensuite si la valeur n'est pas trouvée car inexistante, le code te renvoie forcément une erreur

C'est pour ça que j'utilise

On Error Resume Next
...
On Error Goto 0

A+

Bonjour Bruno,

Je suis d'accord avec ce que tu avances .

Mais je pense que mon comboboxdte me donne une liste qui existe dans ma feuille lors de l'enreistrement.

En rajoutant le code

On Error Resume Next

On Error Goto 0

si dans la liste déroulante la recherche n'existe pas il me donnera rien. Certes qu'il me mettra pas en erreur mais il me donnera pas le résultat que j'escompte.

merci de ton aide

Amicalement

Noel


Re,

Voici le code entier. Il me donne malgré tout l'erreur suivante "erreur de compilation" "Référence incorrect ou non qualifiée"

Le .Range est surligné en bleu

Private Sub ComboBoxDte_Change()

lig = .Range("a3:a" & .Range("A" & Rows.Count).End(xlUp).Row).Find(ComboBoxDte, SearchOrder:=xlByColumns).Row

'lig = .Range("aa3:aa" & .Range("a" & Rows.Count).End(xlUp).Row).Find(ComboBoxDte, SearchOrder:=xlByColumns).Row

On Error Resume Next

Dte = Cells(lig, 1)

CAE = Cells(lig, 4)

On Error GoTo 0

End Sub

Merci d'avance de ton aide pour une éventuelle solution car j'ai toujours des problèmes comme ceux là à chaque fois que je programme ce code, et je ne sais pas comment j'arrive à trouver la solution car dans d'autres projets il fonctionne bien.

@+

Amicalement

noel

Re,

Bruno je pense savoir pourquoi j'ai cette erreur.

C'est tout simplement que je n'ai pas déterminé sur quelle feuille ce code s'applique.

En un mot j'ai oublié de mettre :"With sheets("Listes").

Essaie de voir si c'est bien cela le problème.

merci

@+

Bonjour Noel

je connais ce code....

Oublie pas les points. Ton souci vient peut être que le code ne trouve pas la ligne.

Private Sub ComboBoxDte_Change()
with sheets("Listes")
on error resume next
lig = .Range("a3:a" & .Range("A" & .Rows.Count).End(xlUp).Row).Find(ComboBoxDte, SearchOrder:=xlByColumns).Row
'lig = .Range("aa3:aa" & .Range("a" & Rows.Count).End(xlUp).Row).Find(ComboBoxDte, SearchOrder:=xlByColumns).Row
If lig > 0 then
'On Error Resume Next
Dte = .Cells(lig, 1)
CAE = .Cells(lig, 4)
'On Error GoTo 0
End if
End with
End Sub

Oublie pas la déclaration de variables aussi

Amicalement

Rechercher des sujets similaires à "fonction recherche vba"