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

  • Initiateur de la discussion Initiateur de la discussion Brozad
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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:
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)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
908
Réponses
0
Affichages
1 K
Retour