Recherche de valeur ne fonctionne pas

Bonjour à tous,

Je me retrouve bloqué, mais je ne comprends pas mon erreur, le code me semble pourtant bon.

Je souhaite faire l'équivalent d'une rechercheV par VBA, afin de mettre à jour un tableau au clique d'un bouton.

Les données à reporter se trouve dans un autre fichier.

Voici le code :

Sub Rech_V()
Dim Source As String, i As Integer, t As Integer, _
X As Integer, Val_rech As Range, Res As Range

Source = "URL" 'Adresse fichier source
X = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To X

Val_rech = Thisworbook.Sheets("feuil1").Range("A" & i)
Res = Workbooks(Source).Sheets("Rapport 1").Columns("B").Find(what:=Val_rech, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 2)
Cells(i, 2) = Res

Next i

End Sub

Si vous pouviez m'aider ce serait top.

Merci,

Jakk

Bonjour,

Ton code renvoie un code d'erreur (si oui sur quelle ligne) ou s’exécute sans résultat apparent ?

  • -> Est ce que .Columns("B") ne s'écrirait pas plutôt .Columns("B:B") ou .Columns(2) ?
  • -> Essayer avec Application.VLookUp()

Merci de ta réponse Pedro.

Pour le message d'erreur : il m'affiche "objet requis" sur la ligne où je défini Val_rech.

Pour la partie "Res", j'ai repris une partie d'un code déjà utilisé auparavant, il devrait donc fonctionner. Mais ça ne coûte rien d'essayer.

Je vais tester avec Application.VLookUp.*

Merci encore

J'ai regardé trop vite, il manque un "Set" devant ta ligne où tu définis Val_rech.

En effet, cette objet est une plage de données, ce n'est pas juste un objet dans lequel tu stockes une information, mais un objet dans lequel tu affectes les mêmes propriétés que ta plage, avec une instruction "Set".

J'ai ajouté "Set" mai le problème reste le même, avec Val_rech qui ne me renvoi rien.

L'erreur objet requis persiste.

C'est par ce que tu ne cherches pas une plage mais bien la valeur contenue en "A" & i.

Donc déclare ta variable Val_Rech en String ou Single selon le contenu de la colonne A, et supprime le "Set".

Même chose pour Res, ce n'est pas une plage mais une valeur que tu reportes ensuite dans une cellule.

Parfait, merci cela débloque la situation pour Val_rech.

En revanche sur Res il m'indique que "l'indice n'appartient pas à la sélection". Je suppose que c'est un problème de référence mais je ne sais pas lequel. J'ai tenté avec columns("2") et columns("B:B"), rien n'y fait.

J'ai également tenté avec VLookUp, comme ceci :

Res = WorksheetFunction.VLookup(Val_rech, Workbooks(Source).Sheets("Rapport 1").Range("B:C"), 2, False)

J'ai également déclaré Res en "String".

Merci pour ton aide.

Il y a probablement l'un de ces 3 objets qui n'existe pas ou qui est mal écrit :

Workbooks(Source)

Sheets("Rapport 1")

Range("B:C") <-- je ne pense pas que le problème vienne de celui-ci

Bonjour,

Je crois que res ne peut pas être un range, il est le contenu, pas le contenant.

Donc Dim res as string ... si la recherche et le résultat sont du texte.

Dim res as double ... si la recherche et le résultat sont des valeurs

ric

Bonjour Ric,

Merci à vous 2 pour votre aide.

Le problème venait effectivement de Source.

En y mettant simplement le nom du classeur (le classeur étant ouvert) cela fonctionne.

En mettant l'adresse complète : "C:\Users\...", cela ne fonctionne plus.

Je mets le post en résolu.

Je reste preneur si vous avez une solution pour conserver l'adresse complète...

Bonjour,

une solution pour conserver l'adresse complète...

Peux-tu élaborer s.t.p.

ric

Il s'agit du chemin complet du fichier source ("C:\Users\UnUtilisateur\Documents\NomFichierSource.xlsx"). Or, le nom du fichier ("NomFichierSource.xlsx") suffit s'il est déjà ouvert.

Pour ouvrir le fichier source à partir du chemin complet, le code est :

Dim Source As Workbook
Set Source = Workbooks.Open("C:\Users\UnUtilisateur\Documents\NomFichierSource.xlsx")

Oui, c'est cela Pedro.

Merci à vous deux,

Bonne continuation

Rechercher des sujets similaires à "recherche valeur fonctionne pas"