Vlookup est une fonction essentielle d'Excel et est devenu un élément essentiel du traitement des données. Il fournit certaines des fonctionnalités que vous pouvez généralement associer à une base de données complète.
Et si vous vouliez automatiser cette fonction? Oui, c'est possible, surtout si vous savez utiliser le langage d'automatisation natif d'Excel, VBA. Voici comment vous pouvez automatiser la fonction vlookup dans Excel VBA.
La syntaxe de Vlookup
La syntaxe de la fonction vlookup est assez simple, mais elle comporte quatre aspects sur lesquels vous devez vous concentrer, même en l'automatisant dans Excel VBA.
=vlookup (lookup_value, lookup_array, column_index, exact_match/partial_match)
Les arguments de la fonction ont la signification suivante :
- lookup_value : Il s'agit de la valeur principale que vous souhaitez rechercher dans le tableau de recherche.
- lookup_array : Il s'agit des données source, que lookup_value utilisera comme référence.
- index_colonne : Colonne à partir de laquelle renvoyer la valeur.
- correspondance_exacte/correspondance_partielle : Utilisez 0 ou 1 pour déterminer le type de correspondance.
Préparation des données
Cet ensemble de données comporte deux parties: une table de recherche et les points de données de destination.
La table de recherche se compose de trois colonnes, avec des données remplissant les champs Sous-catégorie et Nom du produit :
La table de destination contient des colonnes correspondantes, sans données de sous-catégorie ou de nom de produit. Notez que les valeurs de sa colonne Order ID sont également présentes dans la même colonne de la table de recherche :
Utiliser Vlookup directement dans une feuille de calcul Excel
Pour remplir les colonnes de destination, B et C, vous pouvez utiliser la fonction vlookup d'Excel.
En cellule B2, saisissez la formule suivante :
=RECHERCHEV($A2, F$$3:$H$17, 2, 0)
De même, dans la cellule C2, entrez cette formule :
=RECHERCHEV($A2, F$$3:$H$17, 3, 0)
Vous pouvez faire glisser la formule de la cellule B2 jusqu'à la fin de la colonne, B17. Répétez ce processus pour la colonne C également. Les valeurs de chaque entrée suivante seront automatiquement mises à jour dans les deux colonnes.
Les valeurs que vous transmettez à la fonction vlookup sont :
- A2: la valeur de recherche se trouve dans cette cellule.
- F3:H17: Il s'agit de la plage de recherche.
- 2/3: colonnes de référence à partir desquelles extraire la valeur.
- 0: Indique une correspondance exacte.
Fonction Vlookup d'Excel VBA
La fonction vlookup présente de nombreuses similitudes, que vous l'utilisiez directement dans Excel ou via VBA. Que vous soyez un analyste de données traitant des lignes de données ou un gestionnaire d'inventaire qui traite régulièrement de nouveaux produits, vous pouvez bénéficier de l'utilisation de vlookup.
Lorsque vous travaillez avec une plage de recherche dynamique, il est toujours préférable d'automatiser vos formules, pour éviter d'appliquer des formules à plusieurs reprises dans Excel. En automatisant votre fonction Vlookup dans VBA, vous pouvez effectuer des calculs multi-colonnes en un seul clic.
1. Effectuez la configuration requise
Commencez par ouvrir l'éditeur de codage (appuyez sur Alt + F11 ou accédez au Développeur tab) dans un nouveau classeur Excel et ajoutez un module pour commencer à écrire votre code. Dans l'éditeur de code, ajoutez les lignes suivantes en haut de la fenêtre de codage pour créer une sous-routine :
Sub vlookup_fn1()End Sub
La sous-routine est un conteneur pour votre code VBA et est essentielle pour l'exécuter avec succès. Une alternative consiste à créer un formulaire utilisateur VBA pour rendre votre interface utilisateur plus interactive.
2. Déclarez vos variables et créez vos plages de référence
Tout d'abord, vous devez déclarer les types de données variables à l'aide de la Faible déclaration:
Dim i comme entier, lastrow comme long
Ensuite, créez un dernière rangée variable, pour stocker la valeur de la dernière ligne remplie dans votre plage de recherche. La fonction lastrow utilise la fin (xldown) pour calculer la référence de ligne de fin dans la plage spécifiée.
Dans ce cas, la variable lastrow stocke la dernière valeur de ligne remplie de la plage de recherche,17.
lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row
Dans l'exemple ci-dessus, la table de destination s'étend de A2:C17, tandis que la table source s'étend de F2:H17. La formule vlookup parcourt chaque valeur stockée dans la colonne A, la recherche dans la table source et colle les entrées correspondantes dans les colonnes B et C.
Cependant, avant de sauter dans la boucle, vous devez stocker les valeurs de plage dans une nouvelle variable (ma_gamme), comme suit:
my_range = Sheets("Sheet2").Range("F3:H" & lastrow)
Vous devez définir explicitement la référence de cellule de départ (F3) et la référence de colonne de fin (H). VBA ajoute automatiquement la valeur de ligne pour compléter le tableau de recherche.
3. Ecrire une boucle pour parcourir chaque valeur de recherche
Avant d'écrire la boucle, définissez la valeur de la ligne de départ, 2. Définir une valeur de départ pour votre boucle est essentiel car vous avez affaire à des éléments dynamiques. Dans la table de destination, la ligne 2 est la première ligne des données. Modifiez cette valeur si vos données commencent dans une ligne différente.
je = 2
Vous pouvez utiliser un faire pendant boucle pour traiter chaque ligne, en commençant à la ligne 2 et en terminant à la ligne 17. Comme le reste du code, cet aspect est dynamique; la boucle s'exécutera jusqu'à ce que la condition soit fausse. Utilisez la condition pour rechercher une valeur non vide dans la première cellule de la ligne actuelle.
Faire Tant que len (Sheets("Sheet2").Cells (i, 1).value) <> 0
À l'intérieur de la boucle, vous pouvez appeler la fonction VLookup pour remplir les cellules :
Feuilles("Feuille2").Cellules (i, 2).Valeur = _ Application. Feuille de travailFonction. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. Feuille de travailFonction. VLookup (Feuilles("Feuille2") _ .Cells (i, 1).Value, my_range, 3, False)
Ces instructions définissent la valeur des cellules de la ligne actuelle, respectivement dans les colonnes 2 et 3. Ils utilisent le Feuille de calculFonction objet d'appeler le RechercheV fonction, en transmettant la valeur correspondante de la colonne 1 à rechercher. Ils transmettent également la plage que vous avez définie précédemment et l'index de la colonne pertinente à partir de laquelle extraire la valeur finale.
Le code vlookup est prêt, mais vous devez toujours augmenter la variable de ligne à chaque fois autour de la boucle :
je = je + 1
Chaque fois que la boucle s'exécute, elle augmente la valeur de je par 1. N'oubliez pas que la valeur de la ligne de départ est 2 et que l'incrément se produit à chaque exécution de la boucle. Utilisez le boucle mot-clé pour définir la fin du bloc de code de la boucle.
Lorsque vous exécutez l'intégralité du code, il remplit les résultats dans les deux colonnes, en fonction des valeurs de la table source.
Voici le code complet pour référence :
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. Feuille de travailFonction. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. Feuille de travailFonction. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub
4. Créer un bouton pour exécuter le code
Avec le code à l'écart, vous pouvez créer un bouton dans votre classeur Excel pour l'exécuter en un seul clic. Insérez votre forme préférée sur une feuille Excel vierge, faites un clic droit dessus et cliquez sur le Affecter une macro option.
Dans la boîte de dialogue, sélectionnez le nom de votre sous-routine, et cliquez sur D'ACCORD.
Lorsque vous souhaitez exécuter votre code, cliquez sur le bouton pour voir comment les données se remplissent immédiatement.
Utilisation d'Excel VBA pour automatiser les fonctions de recherche
Excel VBA est un langage flexible, bien adapté pour faciliter l'automatisation des différentes facettes de MS Excel. De nombreuses options existent dans MS Excel VBA, allant de l'automatisation des fonctions Excel à la création automatique de tableaux croisés dynamiques élaborés.
Lorsque vous travaillez avec différents segments Excel, vous pouvez expérimenter diverses options pour vous faciliter la vie et la rendre plus efficace.