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.
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.
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
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.
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.