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.lastRowetlastCol: 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 :
lastRowest calculée en trouvant la dernière ligne non vide de la colonne 1 (généralement la colonne A).lastColest 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
Findest utilisée pour effectuer la recherche dans lasearchRange. Le paramètreWhat:=searchValueindique la valeur à rechercher,LookIn:=xlValuesgarantit que la recherche se fait sur le contenu des cellules, etLookAt:=xlWholeassure 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.