Problème avec HLookup (RechercheH)

Résolu
Marion16 -  
-
Bonjour,

Voilà quelques jours que je galère sur un code et notamment la fonction HLookup.
Je n'arrive pas à voir le problème.


Pour le contexte : sur l'onglet LISTE(2) je récupère la valeur que je dois rechercher dans un tableau (B8:G10) dans un autre onglet.
La valeur récupère est ensuite mis dans une cellule dans l'onglet LISTE (2).


Le bug arrive sur la ligne :
Indice = Application.WorksheetFunction.HLookup(Critere, Range("Plage"), 3)



For Each Cellule In Selection
numero = Cellule.Value
ligne = Cellule.Row

Dim Plage As Range
Dim Indice As Variant


Worksheets("LISTE (2)").Select
Critere = Range("D" & ligne).Value


Worksheets(numero).Select
Set Plage = Range(Cells(8, 2), Cells(10, 7))


Indice = Application.WorksheetFunction.HLookup(Critere, Range("Plage"), 3)

Worksheets("LISTE (2)").Select
Range("E" & ligne).Value = Indice

4 réponses


 
Bonjour,
Pouvez-vous préciser le message d'erreur ?
Si possible, le fichier sur https://www.cjoint.com/ se sera plus facile pour vous venir en aide!
Salutations.
Le Pingou
0
Marion16
 
Bonjour Le Pingou

Le message précis de l'erreur est
"Erreur d'exécution '1004'
Impossible de lire la propriété HLookup de la classe WorksheetFUnction.


Comme demandé, je vous joint le lien du fichier https://www.cjoint.com/?jqjj5a30XM
Le module qui a un bug est le module 5 !
Le but est de remplir les colonnes C à F de LISTE(2) à l'aide des autres onglets (à partir de l'onglet 1000).
0

 
Bonjour,
Je vous propose de modifier votre code comme suit :
    Dim Plage As Variant 'Range remplacer par Variant
    Dim Indice As Variant
             
'    Worksheets("LISTE (2)").Select  (A supprimer)
Critere = Worksheets("LISTE (2)").Range("D" & ligne).Value    
'    Worksheets(numero).Select  (A supprimer)
Plage = Worksheets(numero).Range(Cells(8, 2), Cells(10, 7)).Value    
    MsgBox Critere
    'MsgBox Plage.Address        
Indice = Application.WorksheetFunction.HLookup(Critere, Plage, 3) 

0
Marion16
 
Bonjour,

je vous remercie de votre réponse et de vous être attaché au problème.

malheureusement le code ne passe pas. Le problème se situe sur la ligne
Plage = Worksheets(numero).Range(Cells(8,2),Cells(10,7).Value
Il dit ne pas reconnaître l'objet.

Néanmoins, j'ai réussi à résoudre mon problème avec une autre façon de faire.
En effet, une partie mon code avant ce problème me permettait de récupérer la colonne voulue. Je n'avais plus qu'à indiquer la ligne correspondant.

Je mets mon code complet pour cette macro puisqu'il peut être une alternative à Hlookup en cas de problème.

Encore merci de vous être penché sur mon problème.




Sub formule_recherche()

Dim numero As String

' Selection de la colonne contenant les numéros des fiches
Worksheets("LISTE (2)").Select
Range("A3").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select

'Boucle pour passer en revue toutes les cellules sélectionnées auparavant
'Mets en mémoire le numéro de la fiche et de la ligne
For Each Cellule In Selection
numero = Cellule.Value
ligne = Cellule.Row


'Remplir la colonne C en indiquant l'entreprise qui fournit la fiche produit

Dim Entreprise
Worksheets(numero).Select
Entreprise = Range("B4").Value
Worksheets("LISTE (2)").Select
Range("C" & ligne).Value = Entreprise


'Remplir la colonne D avec la date la plus récente
'Remplir la colonne E avec l'indice correspondant
'Remplir la colonne F avec le résultat correspondant
'Trouve la cellule vide dans la plage B8:G8 pour connaître la dernière date de réponse
'Code pouvant remplacer la fonction HLookup

Dim i
Worksheets(numero).Select
For i = 2 To 8 Step 1
If Cells(8, i).Value = "" Then
MaDate = Cells(8, i - 1).Value
MsgBox (MaDate)
Indice = Cells(10, i - 1).Value
MsgBox (Indice)
Resultat = Cells(9, i - 1).Value
MsgBox (Resultat)
Worksheets("LISTE (2)").Select
Range("D" & ligne).Value = MaDate
Range("E" & ligne).Value = Indice
Range("F" & ligne).Value = Resultat
Exit For
End If
Next
Next
End Sub
0