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 😎