[VBA] RechercheH/V, ignorer en cas de non correspondance

Brozad

XLDnaute Nouveau
Bonjour à tous,

A partir d'une base de donnée, je dois transformer des codes IATA d'aéoroport (ex : CDG, MRS) en nom d'aéroport (tel que Paris Charles de Gaulle ou Marseille).

Mon problème est que après avoir établi une liste de plus de 7000 codes IATA dans excel, il m'arrive parfois qu'il n'y ait pas de correspondance... J'utilise une recherche V.

J'aimerai que dans ce cas là, le programme continu et renvoie la valeur actuelle.

Par exemple :

On cherche le nom du code XIY (aéroport de Xianyang en Chine)
La correspondance ne se fait pas car l'aéroport n'est pas dans ma base de donnée
La valeur reste XIY

Actuellement, j'ai un code avec des boucles du style :

Code:
Cells(a, r).Select
ActiveCell.FormulaR1C1 = WorksheetFunction.VLookup(Cells(a, q), plage_destination, 2, 0)

Et s'il n'y a pas de correspondance un message d'erreur apparait et stop la macro


En remplaçant le code par "2, 1" à la fin pour avoir une valeur approchée.

Code:
Cells(a, r).Select
ActiveCell.FormulaR1C1 = WorksheetFunction.VLookup(Cells(a, q), plage_destination, [B]2, 1[/B])

La macro continue mais donne un aéroport erroné, ce qui ne convient pas du tout !

Si vous avez une solution à mon problème ce serait super ! Peut être il y a-t-il une fonction qui sait détecter lorsque la valeur n'existe pas et donc dans ce cas là j'écris simplement :

If "fonction pas de correspondance" Then
Range(destination) = Range(code_IATA)
End if


Merci à tous ceux qui seront en mesure de m'aider :)
 
Dernière édition:

2passage

XLDnaute Impliqué
Re : [VBA] RechercheH/V, ignorer en cas de non correspondance

Bonjour,

Brièvement, la fonction ESTNA te permet de tester le retour de la recherche. L'algo donne si(estna(vlookup)=faux, retourne le résultat du vlookup, sinon rien)
++

edit : ESTNA, en vba, c'est
WorksheetFunction.isna
 
Dernière édition:

youky(BJ)

XLDnaute Barbatruc
Re : [VBA] RechercheH/V, ignorer en cas de non correspondance

Bonjour Brozad,
Comme ceci . . . .

Bruno

Code:
Cells(a, r).Select
On Error Resume Next
ActiveCell.FormulaR1C1 = WorksheetFunction.VLookup(Cells(a, q), plage_destination, 2, 1)
If Err > 0 Then Err.Clear: Range(Destination) = Range(code_IATA)
 

Discussions similaires

Réponses
3
Affichages
1 K

Statistiques des forums

Discussions
312 294
Messages
2 086 916
Membres
103 404
dernier inscrit
sultan87