Gestion erreur vlookup

Bonjour,

Dans le fichier en PJ j’ai programmé une fonction vlookup mais je n’arrive à gérer l’erreur. Vlookup cherche une valeur de sheets(« 1 ») dans sheets(« 2 »). Je souhaiterais que si vlookup ne trouve pas la valeur cherchée alors sheets(« 1 »).cells(A,7).value = « Pas d’information ».
Si vlookup trouve la valeur alors cells(A,7).value = valeur retournée par vlookup.
J’ai écrit une instruction If iserror then else mais j’ai une erreur 1004.

Quelqu’un connait-il ce problème ?

Merci :+1:t2:

Build2 .xlsm.xlsx (313,9 Ko)

1 « J'aime »

Y-a-t-il un problème avec ce fichier ? Je ne sais pas l’ouvrir sans erreur.
Pour un fichier avec des macros, il doit se terminer avec xlsm ou xlsb ou xls ou … , mais certainement pas avec xlsx.

1 « J'aime »

Bonjour,
Pour ignorer l’erreur vous pouvez utiliser

On error goto nom
'Boucle
nom:

exemple :
Build2 .xlsm (314,9 Ko)

1 « J'aime »

Salut @Cow18 ,
Oui il faut supprimer l’extension « .xlsx », le fichier est en « .xlsm »

1 « J'aime »

une solution sans « worksheetfunction »`Sub recherche()
Dim a As Range
Dim Derlign As Integer
Dim b As Integer, x As Variant

 Derlign = Range("C" & Rows.Count).End(xlUp).Row - 1
 Sheets(2).Range("G2:K22").Name = "base"
 Set a = Range("base")
 Range("G4").Select

 For b = 0 To Derlign
      x = Application.VLookup(ActiveCell.Offset(b, -4), a, 5, 0)     'sans "worksheetfunction"
      If IsError(x) Then
           ActiveCell.Offset(b, 0) = "Pas d’information"
      Else
           ActiveCell.Offset(b, 0) = x
      End If
 Next

End Sub
`

1 « J'aime »

Toi aussi tu utilises les Select !!!

Range("G4").Select

Je vois que je ne suis pas seul

1 « J'aime »

Salut @Cow18
Merci beaucoup, un astuce en plus dans mes connaissances.

J’ai adapté la macro et parfois je ne veux pas avoir l’air complètement grossier en changeant tout. Oui, un boucle sans « select » est mieux, mais peut-être, pour le moment, trop compliqué pour Flofr91.

2 « J'aime »

Pour repositionner le débat sur ce sujet certes je confirme tes propos à éviter au maximum les Select et Activate mais ne pas en faire une chasse éperdue à proscrire ils ont le droit de cité dans les codes
Avoir une trame de confection à suivre avec ces règles de bon sens mais ne pas en faire absolu c’est ma devise

Je suis complètement d’accord avec vous.
Dans cette question, j’avais simplement proposé d’enlever le « worksheetfunction » et de sauvegarder le résultat dans un variable type « Variant ». C’était donc la solution, n’est-ce pas ? Autrement, je n’ai pas touché au reste, parce que Flofr91 est encore débutant.

1 « J'aime »

Merci à tous. Cela fonctionne en enlevant worksheetfunction et en créant une variable alternative.

1 « J'aime »

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.