Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Trouver une valeur avec une fonction

Nicodemius

XLDnaute Nouveau
Bonjour à tous.
Je tente de créer une fonction qui puisse me permettre de retrouver le numero de ligne d'un enregistrement en fonction d'une valeur dans ma feuille.

Etant Novice, j'aurais souhaité la soumettre à la communauté.

VB:
Public Function TrouveLigne(MyVal As String, NomFeuille As String) As Integer
'Fonction chargée de récupérér le Numéro de ligne en rapport avec la valeur recherchée.

Dim Ws As Worksheet     'Réf à la feuille de calcul
Dim MyRange As Range    'Réf à la plage de cellules
Dim MyCell As Range     'Réf à la cellule recherchée

Dim Lng_LastRow As Long     'dernière Ligne
Dim Lng_LastCol As Long     'dernière colonne

'On définit la plage de cellule sur laquelle va s'effectuer la recherche
Set Ws = ThisWorkbook.Sheets(NomFeuille)
Lng_LastRow = Ws.Range("A" & Rows.Count).End(xlUp).Row
Lng_LastCol = Ws.Cells(1, Cells.Columns.Count).End(xlToLeft).Column

'Si le tableau est vide on quitte la procédure.
'Attention, le tableau contient 1 ligne d'en-tête
If Lng_LastRow <= 1 Then
    Set Ws = Nothing
    Exit Function
End If

Set MyRange = Ws.Range(Cells(1, 1), Cells(Lng_LastRow, Lng_LastCol))
Set MyCell = MyRange.Find(What:=MyVal, LookIn:=xlValues, LookAt:=xlWhole)

TrouveLigne = MyCell.Row

Set MyCell = Nothing
Set MyRange = Nothing
Set Ws = Nothing

End Function

Pour le moment, tout semble fonctionner, mais j'aimerais connaitre votre avis et savoir si je n'ai pas fais d'erreur.

Pour finir, j'aurais 2 questions.

1 - Comment dois-je modifier le code dans le cas où la valeur recherchée ne serait pas trouvé ?
(Je pensais à "If MyCell IsNothing then Exit Function")

2 - Comment dois-je modifier le code pour rechercher plusieurs valeurs sur une même ligne ?
(J'imaginais quelque chose comme ; )

Code:
If MyCell.Offset(0, 1) = val2 And MyCell.Offset(0, 2) = val3 Then
    TrouveLigne = MyCell.Row
Else
    Msgbox "Valeur non trouvée"
    Exit Function
End if

Qu'en pensez vous ?
 

Discussions similaires

Réponses
5
Affichages
327
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…