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).Rowsi c'est une date
lig = .Range("Aa3:Aa" & .Range("Aa" & .Rows.Count).End(xlUp).Row).Find(CStr(ComboBoxDte.Value), LookIn:=xlValues, SearchOrder:=xlByColumns).Rowsi c'est un chiffre
lig = .Range("Aa3:Aa" & .Range("Aa" & .Rows.Count).End(xlUp).Row).Find(CDate(ComboBoxDte.Value), LookIn:=xlValues, SearchOrder:=xlByColumns).RowJ'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).RowRien 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 0A+
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 SubOublie pas la déclaration de variables aussi
Amicalement