dionys0s
XLDnaute Impliqué
Salut le forum,
j'essaie de développer une petite fonction de recherche personnalisée avec Range.Find + Range.FindNext dont le résultat serait un Range. La fonction fonctionne correctement sauf dans un cas : lorsque la valeur recherchée n'est présente qu'une seule fois dans une cellule fusionnée. La démarche est la suivante :
Je recherche une valeur dans un Range (Range.Find) puis je cherche les suivants. Sauf que lorsque le résultat de la première recherche est dans une cellule fusionnée, FindNext plante. Où me suis-je planté ? Je pensais que FindNext tournait en boucle et revenait sur la cellule trouvée s'il n'y en a pas d'autre. Mais pas si c'est une cellule fusionnée ?
D'avance merci pour votre aide
j'essaie de développer une petite fonction de recherche personnalisée avec Range.Find + Range.FindNext dont le résultat serait un Range. La fonction fonctionne correctement sauf dans un cas : lorsque la valeur recherchée n'est présente qu'une seule fois dans une cellule fusionnée. La démarche est la suivante :
Je recherche une valeur dans un Range (Range.Find) puis je cherche les suivants. Sauf que lorsque le résultat de la première recherche est dans une cellule fusionnée, FindNext plante. Où me suis-je planté ? Je pensais que FindNext tournait en boucle et revenait sur la cellule trouvée s'il n'y en a pas d'autre. Mais pas si c'est une cellule fusionnée ?
D'avance merci pour votre aide
VB:
Public Function Fnd(ByRef SearchRng As Range, ByVal What As String, _
Optional ByVal LookAt As XlLookAt = xlWhole, Optional ByVal MatchCase As Boolean = True, _
Optional ByVal Mandatory As Boolean = True, Optional ByVal AlwSvrl As Boolean = False) As Range
Dim Rng As Range
Set Rng = SearchRng.Find(What, LstCel(SearchRng), xlValues, LookAt, xlByRows, xlNext, MatchCase)
If Rng Is Nothing Then Exit Function Else Set Fnd = Rng.MergeArea
If AlwSvrl Then
Do While Intersect(Fnd, SearchRng.FindNext(Rng)) Is Nothing
Set Rng = SearchRng.FindNext(Rng): Set Fnd = Union(Fnd, Rng.MergeArea): Loop
Else
'Test + erreur le cas échéant
End If
End Function