JNP
XLDnaute Barbatruc
Bonjour le forum ,
Depuis hier soir, je bute sur quelque chose de certainement très bête mais je n'arrive pas à trouver l'erreur ...
En rapport avec ce fil, j'ai d'abord construit une recherche simple qui marche très bien
puis j'ai voulu intégrer une possibilité de choisir les N valeurs trouvées à la suite. J'ai donc écrit cette fonction
qui ne marche pas. Pourquoi ? En faisant du pas-à-pas, je me suis aperçu que le FindNext renvoyait Nothing ... D'où plantage sur Cellule.Address ...
Pourtant, un copier/coller du même code en sub
lui fonctionne ... J'ai mis des MsgBox pour mettre le problème en exergue .
De plus, j'ai déjà utilisé FindNext dans des fonctions sans soucis ...
Le fichier en PJ. Si quelqu'un peux m'expliquer, je suis preneur ...
Bon dimanche
Depuis hier soir, je bute sur quelque chose de certainement très bête mais je n'arrive pas à trouver l'erreur ...
En rapport avec ce fil, j'ai d'abord construit une recherche simple qui marche très bien
Code:
Function RechercheSimple(Plage As Range, AChercher As String, ADécaler As Integer) As String
Dim Cellule As Range
Set Cellule = Plage.Find(What:=AChercher, LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=True)
If Not Cellule Is Nothing Then RechercheSimple = Cellule.Offset(0, ADécaler)
End Function
Code:
Function RechercheMultiple(Plage As Range, AChercher As String, ADécaler As Integer, Valeur As Integer) As String
Dim Cellule As Range, Première As String, Tableau() As String, I As Integer
With Plage
Set Cellule = .Find(What:=AChercher, LookAt:=xlWhole, MatchCase:=True)
If Not Cellule Is Nothing Then
Première = Cellule.Address
Do
MsgBox Cellule.Address
ReDim Preserve Tableau(I)
Tableau(I) = Cellule.Offset(0, ADécaler)
I = I + 1
Set Cellule = .FindNext(Cellule)
Loop While Not Cellule Is Nothing And Cellule.Address <> Première
Else
Exit Function
End If
End With
If Valeur - 1 <= UBound(Tableau) Then
RechercheMultiple = Tableau(Valeur - 1)
End If
End Function
Pourtant, un copier/coller du même code en sub
Code:
Sub test()
Dim Cellule As Range, Première As String, Tableau() As String, I As Integer
With Range("A:A")
Set Cellule = .Find(What:="ab", LookAt:=xlWhole, MatchCase:=True)
If Not Cellule Is Nothing Then
Première = Cellule.Address
Do
MsgBox Cellule.Address
Set Cellule = .FindNext(Cellule)
Loop While Not Cellule Is Nothing And Cellule.Address <> Première
End If
End With
End Sub
De plus, j'ai déjà utilisé FindNext dans des fonctions sans soucis ...
Le fichier en PJ. Si quelqu'un peux m'expliquer, je suis preneur ...
Bon dimanche