Comment automatiser Vlookup à laide dExcel VBA

Comment automatiser Vlookup à laide dExcel VBA

Vlookup est une fonction essentielle d'Excel et est devenue une partie importante du traitement des données. Il fournit un certain nombre de fonctions que vous pouvez combiner avec une base de données complète.

Cependant, si vous souhaitez automatiser cette fonction, vous le pouvez, surtout si vous savez utiliser le langage d'automatisation disponible dans Excel et VBA. Voici comment automatiser la fonction vlookup dans Excel VBA .

Formule de fonction Vlookup dans Excel

=vlookup(lookup_value, lookup_array, column_index, exact_match/partial_match)

Signification des arguments dans la formule :

  • lookup_value: La valeur sous-jacente que vous souhaitez rechercher dans le tableau.
  • lookup_array: Données source, lookup_value sera utilisé comme référence.
  • column_index: La colonne renvoie la valeur.
  • exact_match/partial_match: Utilisez 0 ou 1 pour spécifier le type de combinaison.

Fonction VBA Vlookup dans Excel

L'utilisation de la fonction Vlookup n'est pas très différente lorsque vous l'utilisez directement dans Excel ou via VBA. Qu'un analyste de données traite des lignes d'informations ou qu'un responsable d'entrepôt travaille constamment avec de nouveaux produits, la fonction vlookup est utile.

Lorsque vous travaillez avec une plage de recherche dynamique, il est préférable d’automatiser la formule afin d’éviter d’avoir à manipuler plusieurs fois la même formule dans Excel. En automatisant la fonction Vlookup dans VBA, vous pouvez effectuer des calculs multi-colonnes en un seul clic.

Illustration

Cet ensemble de données comporte deux parties : une table de recherche et des points de données cibles. La table de recherche contient 3 colonnes, avec des données dans les deux champs Sous-catégorie et Nom du produit :

Comment automatiser Vlookup à l'aide d'Excel VBA

La table cible contient les colonnes appropriées, sans sous-dossiers ni données de nom de produit. Notez que les valeurs de la colonne Order ID apparaissent également dans la même colonne de la table de recherche :

Comment automatiser Vlookup à l'aide d'Excel VBA

1. Effectuez les réglages nécessaires

Commencez par ouvrir l'éditeur de code (appuyez sur Alt + F11 ou accédez à l' onglet Développeur ) dans un nouveau classeur Excel et ajoutez le module pour commencer le codage. Dans l'éditeur de code, ajoutez les lignes suivantes en haut de la fenêtre de programmation pour créer un sous-programme :

Sub vlookup_fn1()End Sub

Le sous-programme est un conteneur pour le code VBA et est nécessaire pour l'exécuter correctement. Une autre alternative consiste à créer un formulaire utilisateur VBA pour rendre l'interface utilisateur plus interactive.

2. Déclarez les variables et créez des étendues de référence

Tout d'abord, vous devez déclarer les types de données des variables à l'aide de la commande Dim :

Dim i as integer, lastrow as long

Ensuite, créez une variable lastrow pour stocker la valeur de la dernière ligne renseignée dans la plage de recherche. La fonction lastrow utilise la fonction end(xldown) pour calculer la dernière référence de ligne dans une plage spécifique.

Dans cet exemple, la variable lastrow contient la valeur de la dernière ligne remplie dans la plage de recherche, plus précisément 17.

lastrow = Sheets("Sheet2").Range("F3").End(xlDown).Row

Dans l'exemple ci-dessus, la table de destination s'étend de A2:C17 et la table source s'étend de F2:H17. La formule vlookup parcourra chaque valeur de la colonne A, la recherchera dans la table source et collera les entrées combinées dans les colonnes B et C.

Cependant, avant d'entrer dans la boucle, vous devez stocker les valeurs de plage dans une nouvelle variable ( my_range ) comme suit :

my_range = Sheets("Sheet2").Range("F3:H" & lastrow)

Vous devez spécifier explicitement la référence de cellule de début (F3) et la référence de colonne de fin (H). VBA ajoute automatiquement des valeurs de ligne pour compléter le tableau de recherche.

Comment automatiser Vlookup à l'aide d'Excel VBA

3. Écrivez une boucle pour parcourir chaque valeur de recherche

Avant d'écrire la boucle, définissez la valeur de la ligne de départ, 2. La définition d'une valeur de départ pour la boucle est nécessaire lorsque vous traitez des composants dynamiques. Dans la table de destination, la ligne 2 est la première ligne de données. Modifiez cette valeur si les données commencent dans une ligne différente.

i = 2

Vous pouvez utiliser une boucle do-while pour traiter chaque ligne, en commençant à la ligne 2 et en terminant à la ligne 17. Comme le reste du code, cet aspect est flexible ; La boucle s'exécutera jusqu'à ce que la condition soit fausse. Utilisez la condition pour tester une valeur non vide dans la première cellule de la ligne actuelle.

Do While len(Sheets("Sheet2").Cells(i, 1).value) <> 0

A l'intérieur de la boucle, vous pouvez appeler la fonction Vlookup pour remplir les cellules :

Sheets("Sheet2").Cells(i, 2).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 2, False)Sheets("Sheet2").Cells(i, 3).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 3, False)

Ces commandes définissent les valeurs des cellules de la ligne actuelle, respectivement dans les colonnes 2 et 3. Ils utilisent l'objet WorksheetFunction pour appeler la fonction Vlookup, en passant la valeur correspondante de la colonne 1 à la recherche. Ils transmettent également la plage que vous avez initialement définie et l'index de la colonne concernée pour récupérer la valeur finale.

Le code vlookup est prêt, mais vous devez quand même incrémenter la variable row à chaque fois dans la boucle :

i = i + 1

Chaque fois que la boucle s'exécute, elle incrémente la valeur i de 1 . N'oubliez pas que la valeur de la ligne de départ est 2, l'incrément se produit à chaque exécution de la boucle. Utilisez le mot-clé loop pour définir la fin de ce bloc de code.

Lorsque l'intégralité du code est exécuté, il remplira les deux colonnes avec des résultats, en fonction des valeurs de la table source.

Comment automatiser Vlookup à l'aide d'Excel VBA

Ci-dessous le code de référence complet :

 Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Range("F3").End(xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & lastrow) i = 2 Do While Len(Sheets("Sheet2").Cells(i, 1).Value) <> 0 On Error Resume Next Sheets("Sheet2").Cells(i, 2).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells(i, 3).Value = _ Application.WorksheetFunction.VLookup(Sheets("Sheet2") _ .Cells(i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub

4. Créez un bouton pour exécuter le code

Vous pouvez créer un bouton dans un tableau Excel pour l'exécuter en un clic. Insérez la forme souhaitée sur la feuille Excel vierge, faites un clic droit dessus et cliquez sur l' option Attribuer une macro .

Comment automatiser Vlookup à l'aide d'Excel VBA

Dans la boîte de dialogue, sélectionnez le nom du sous-programme et cliquez sur OK .

Comment automatiser Vlookup à l'aide d'Excel VBA

Lorsque vous souhaitez exécuter le code, cliquez sur le bouton pour voir immédiatement comment les données sont remplies.

Ci-dessus, comment utiliser Excel VBA pour automatiser les fonctions de recherche . J'espère que l'article vous sera utile.


Jouez à puzzle sur Excel

Jouez à puzzle sur Excel

MehmetSalihKoten, un utilisateur de Reddit, a créé une version entièrement fonctionnelle de Tetris dans Microsoft Excel.

Comment utiliser la fonction Convertir dans Excel

Comment utiliser la fonction Convertir dans Excel

Pour convertir des unités de mesure dans Excel, nous utiliserons la fonction Convertir.

Comment utiliser la fonction HLOOKUP dans Excel

Comment utiliser la fonction HLOOKUP dans Excel

Qu'est-ce que la fonction HLOOKUP ? Comment utiliser la fonction RECHERCHEH dans Excel ? Découvrons-le avec LuckyTemplates !

Fonction SIERREUR dans Excel, formule et utilisation

Fonction SIERREUR dans Excel, formule et utilisation

La fonction SIERREUR dans Excel est assez couramment utilisée. Pour bien l'utiliser, vous devez comprendre la formule SIERREUR de Microsoft Excel.

Comment utiliser la fonction VALEUR dans Excel

Comment utiliser la fonction VALEUR dans Excel

Qu'est-ce que la fonction VALEUR dans Excel ? Quelle est la formule de valeur dans Excel ? Découvrons-le avec LuckyTemplates.com !

Fonction Excel EOMONTH, comment utiliser la fonction EOMONTH

Fonction Excel EOMONTH, comment utiliser la fonction EOMONTH

La fonction EOMONTH dans Excel permet d'afficher le dernier jour d'un mois donné, avec une mise en œuvre très simple. Vous obtiendrez alors le dernier jour d'un mois spécifique en fonction des données que nous avons saisies.

Comment utiliser la boucle do-while dans Excel VBA

Comment utiliser la boucle do-while dans Excel VBA

Vous souhaitez automatiser les tâches répétitives dans Excel VBA ? Apprenons donc à utiliser une boucle Do-While pour implémenter une série d'actions qui se répètent jusqu'à ce qu'une condition soit remplie.

Excel 2016 - Leçon 6 : Modifier la taille des colonnes, des lignes et des cellules dans Excel

Excel 2016 - Leçon 6 : Modifier la taille des colonnes, des lignes et des cellules dans Excel

La largeur de colonne et la hauteur de ligne par défaut dans Excel peuvent ne pas correspondre aux données que vous saisissez. L'article ci-dessous vous montre quelques façons de modifier la taille des colonnes, des lignes et des cellules dans Excel 2016. Veuillez vous y référer !

Excel 2016 - Leçon 5 : Concepts de base des cellules et des plages

Excel 2016 - Leçon 5 : Concepts de base des cellules et des plages

Chaque fois que vous travaillez avec Excel, vous devrez saisir des informations – ou du contenu – dans des cellules. Apprenons avec LuckyTemplates les concepts de base des cellules et des plages dans Excel 2016 !

Comment utiliser la fonction XLOOKUP dans Excel

Comment utiliser la fonction XLOOKUP dans Excel

Qu'est-ce que la fonction Xlookup dans Excel ? Comment utiliser Xlookup dans Excel ? Découvrons-le avec LuckyTemplates.com !