Problème avec HLookup (RechercheH)
Résolu/Fermé
Marion16
-
15 sept. 2010 à 15:46
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 - 17 sept. 2010 à 16:00
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 - 17 sept. 2010 à 16:00
4 réponses
Le Pingou
Messages postés
12048
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
26 avril 2024
1 427
Modifié par Le Pingou le 15/09/2010 à 21:29
Modifié par Le Pingou le 15/09/2010 à 21:29
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
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
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).
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).
Le Pingou
Messages postés
12048
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
26 avril 2024
1 427
16 sept. 2010 à 15:20
16 sept. 2010 à 15:20
Bonjour,
Je vous propose de modifier votre code comme suit :
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)
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
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
Le Pingou
Messages postés
12048
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
26 avril 2024
1 427
17 sept. 2010 à 16:00
17 sept. 2010 à 16:00
Bonjour,
Merci pour l'information.
Au passage , c'est étonnant se problème de code, car je l'ai testé chez moi et c'est parfait.
Salutations.
Le Pingou
Merci pour l'information.
Au passage , c'est étonnant se problème de code, car je l'ai testé chez moi et c'est parfait.
Salutations.
Le Pingou