VBA - Excel : Recherchev se bloque mon programme en cas de non correspondance trouvé

Dans mon programme, l'utilisateur saisit un Code Postal et obtient en sortie des informations relatives au Code Postal de la (province, ville, district). Pour ce faire, j'utilise la fonction Recherchev.
Ainsi, l'utilisateur :

  1. Types un code Postal dans la feuille principale
  2. Le programme de recherche dans une base de données (dans une autre feuille) dans lequel le Code Postal sont associés à la Ville, la Province, de District.
  3. Quand il y a un match, il envoie le résultat à la page principale, de sorte que l'utilisateur peut obtenir une ville, province, district, juste en tapant le Code Postal. Assez simple processus.

J'utilise ce code pour le faire :

If Range("J9").Value <> "N/A" Then 'if there is actually a zip code entered by the user (if not, it will be "N/A")
cityZip = Application.WorksheetFunction.VLookup(sMain.Range("J9").Value,
                 sZipCodes.Range("B2:E864"), 3, False)
barangayZip = Application.WorksheetFunction.VLookup(sMain.Range("J9").Value,   
                 sZipCodes.Range("B2:E864"), 2, False)
provinceZip = Application.WorksheetFunction.VLookup(sMain.Range("J9").Value,    
                 sZipCodes.Range("B2:E864"), 4, False)
sMain.Range("J7").Value = provinceZip
sMain.Range("J13").Value = cityZip
sMain.Range("J16").Value = barangayZip
Else
End If

Il fonctionne parfaitement quand il y a un Code Postal qui est dans ma base de données. Mais si pas, il bloque l'exécution du programme et j'ai un message d'erreur ("erreur d'exécution '1004', impossible de lire la Recherchev ...).
Comment modifier mon code pour juste dire que si il n'y a pas de match, alors qu'il devrait tout simplement ne rien faire? Je ne sais pas comment introduire cette demande en fonction Recherchev.

Merci d'avance !

EDIT : voici mon nouveau code, après Tim Williams suggestion :

'Using Zip Code
If Range("J9").Value <> "N/A" Then
provinceZip = Application.Lookup(sMain.Range("J9").Value, sZipCodes.Range("B2:E907"), 4, False)

If IsError(provinceZip) = False Then
cityZip = Application.Lookup(sMain.Range("J9").Value, sZipCodes.Range("B2:E907"), 3, False)
barangayZip = Application.Lookup(sMain.Range("J9").Value, sZipCodes.Range("B2:E907"), 2, False)

sMain.Range("J7").Value = provinceZip
sMain.Range("J13").Value = cityZip
sMain.Range("J16").Value = barangayZip
Else
'do nothing
End If

End If

Mon erreur sur cette ligne :

provinceZip = Application.Lookup(sMain.Range("J9").Value, sZipCodes.Range("B2:E907"), 4, False)

=> Erreur 1004, nombre d'arguments incorrect

Déposer les .WorkSheetFunction et il suffit d'utiliser Application.Lookup. Ensuite, vous pouvez tester la valeur de retour à l'aide de IsError() sur la première recherche
est droit. Cependant, pourquoi ne pas simplement mettre le VLOOKUP formules dans les cellules J7, J13 et J16 directement? Vous pouvez également en faire J9 une validation des données de liste déroulante dont la source de gamme est à votre liste de codes postaux. De cette façon, les utilisateurs ne pouvais en choisir qu'valide codes postaux et vous pourriez éviter (peut-être) inutile de codage.
merci!!!! J'ai trouvé plus de détails ici (cpearson.com/excel/callingworksheetfunctionsinvba.aspx ) et j'ai essayé de suivre leur exemple, mais j'ai encore un problème, différent cette fois-ci (mais toujours erreur 1004), lorsque j'essaie d'exécuter mon programme... je vais modifier mon code avec plus de détails.
merci pour les suggestions, mais l'utilisateur n'est en fait pas le type de l'zip code, j'ai juste évité de donner des détails inutiles. Pour résumer, le code postal est automatiquement trouvé dans une adresse, envoyé à "J9", mais peut parfois être confondu avec autre chose (un numéro de rue, un numéro d'unité, etc.) donc il doit y avoir une erreur de manipulation de la partie!
Votre erreur est parce que vous avez mis de VLOOKUP à LOOKUP dans votre code.

OriginalL'auteur Phalanx | 2013-06-14