Créer une recherche dans une plage dynamique, Excel VBA
Voici un exemple détaillé de code VBA pour créer une recherche dans une plage dynamique dans Excel. L’objectif est de trouver une valeur spécifique dans une plage de données dynamique. Cette plage peut changer en fonction du nombre de lignes ou de colonnes dans votre feuille de calcul, et cet exemple ajustera la plage dynamiquement à mesure que des données sont ajoutées ou supprimées.
Code VBA :
Sub CreateDynamicRangeSearch() Dim ws As Worksheet Dim searchRange As Range Dim searchValue As Variant Dim foundCell As Range Dim lastRow As Long Dim lastCol As Long ' Définir la feuille de travail à utiliser Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez Sheet1 par le nom réel de votre feuille ' Demander à l'utilisateur la valeur à rechercher searchValue = InputBox("Entrez la valeur à rechercher:", "Valeur de recherche") ' Trouver la dernière ligne et la dernière colonne de la plage utilisée dans la feuille lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' Définir la plage de recherche dynamique Set searchRange = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) ' Rechercher la valeur dans la plage dynamique Set foundCell = searchRange.Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole) ' Vérifier si la valeur a été trouvée If Not foundCell Is Nothing Then MsgBox "Valeur trouvée dans la cellule : " & foundCell.Address, vbInformation, "Résultat de la recherche" Else MsgBox "Valeur non trouvée.", vbExclamation, "Résultat de la recherche" End If End Sub
Explication :
1. Définir les variables :
ws
: Cela représente la feuille de calcul où se trouvent les données (vous pouvez changer le nom de la feuille).searchRange
: C’est la plage dynamique dans laquelle vous allez rechercher la valeur.searchValue
: La valeur que l’utilisateur recherche, qui est entrée via une boîte de dialogue InputBox.foundCell
: Cette variable contiendra la cellule où la valeur est trouvée.lastRow
etlastCol
: Ces variables sont utilisées pour trouver la dernière ligne et la dernière colonne avec des données dans la feuille.
2. Paramétrage de la feuille de travail :
- Le code utilise
Set ws = ThisWorkbook.Sheets("Sheet1")
pour définir la feuille de calcul. Assurez-vous de remplacer"Sheet1"
par le nom réel de votre feuille.
3. Trouver la dernière ligne et colonne :
lastRow
est calculée en trouvant la dernière ligne non vide de la colonne 1 (généralement la colonne A).lastCol
est calculée en trouvant la dernière colonne non vide de la ligne 1 (la première ligne).
4. Définir la plage dynamique :
- La plage de recherche est définie de la cellule (1,1) (en haut à gauche de la feuille) à la dernière ligne et colonne déterminées ci-dessus. Cela crée une plage dynamique basée sur les données présentes dans la feuille.
5. Processus de recherche :
- La méthode
Find
est utilisée pour effectuer la recherche dans lasearchRange
. Le paramètreWhat:=searchValue
indique la valeur à rechercher,LookIn:=xlValues
garantit que la recherche se fait sur le contenu des cellules, etLookAt:=xlWhole
assure que le contenu entier de la cellule doit correspondre.
6. Gestion des résultats :
- Si la valeur est trouvée, une boîte de message affiche l’adresse de la cellule où la valeur a été localisée.
- Si la valeur n’est pas trouvée, une boîte de message informe l’utilisateur qu’aucune valeur n’a été trouvée.
Résultat :
Lorsque vous exécutez le code, une boîte de saisie apparaîtra pour que vous puissiez entrer la valeur à rechercher. Après avoir entré la valeur, le code effectuera la recherche dans la plage dynamique et affichera une boîte de message indiquant soit l’adresse de la cellule où la valeur a été trouvée, soit un message vous informant que la valeur n’a pas été trouvée.
Cette méthode peut être appliquée à différents scénarios, comme la recherche dans une plage de données qui peut augmenter ou diminuer avec le temps. Elle garantit que le code reste adaptable aux changements dans la taille des données.