VBA : erreur avec FindNext

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 :)

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
 

Pièces jointes

  • FindNext.xlsm
    39.2 KB · Affichages: 23
  • FindNext.xlsm
    39.2 KB · Affichages: 24

mutzik

XLDnaute Barbatruc
Re : VBA : erreur avec FindNext

re,
si tu nous fournissais un 'vrai' fichier contenant de fausses données, bien sur, cela serait vraiment plus pratique
NB: et sans cellules fusionnées, bien sur

sinon l'aide d'excel donne un bon exemple de la méthode .find
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 137
Membres
112 668
dernier inscrit
foyoman