Sous-routine en plusieurs parties
Bonjour à tous,
Bon cette fois ci je vais essayé d'être clair car la dernière fois j'ai pas fait des merveilles:P (en plus l'intitulé est déjà obscure) :mrgreen:
Bon j'ai un code assez standard qui fait une recherche sur une plage donnée et renvoie de l'info à chaque fois qu'il trouve quelque chose :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| With InitDetail.Columns(ColDetail.Inv) 'plage de donnée pour la recherche
Set DetailFoundRange = .Find(What:="Sandwich", LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
True, SearchFormat:=False)
If Not DetailFoundRange Is Nothing Then
DetailFirstAddress = DetailFoundRange.Address
Do
MsgBox "JambonBeurre" 'a chaque fois qu'on trouve, on renvoie jambonbeurre
Set DetailFoundRange = .FindNext(DetailFoundRange)
Loop While Not DetailFoundRange Is Nothing And DetailFirstAddress <> DetailFoundRange.Address
End If
End With |
Un basique, qui marche très bien (je vous rassure je ne cherche pas à créer un programme qui renvoie JambonBeurre, je préfére clairement le saucisson :mouarf: ).
Le souci c'est que j'utilise ce bloc de recherche, assez volumineux, à plusieurs endroits et que j'aimerais donc l'enregistrer comme une routine dans un module que je puisse ensuite l'appeler :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 'Dans mon Module Public :
Public Function FindInfo(LookRange As Range, LookWhat As Object, LocalEvent as Function)
With LookRange
Set FoundRange = .Find(What:=LookWhat, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
True, SearchFormat:=False)
If Not FoundRange Is Nothing Then
FirstAddress = FoundRange.Address
Do
LocalEvent
Set FoundRange = .FindNext(FoundRange)
Loop While Not FoundRange Is Nothing And FirstAddress <> FoundRange.Address
End If
End With
End Function |
Code:
1 2
| 'Dans ma procédure :
Call FindInfo(InitDetail.Columns(ColDetail.Inv),"Sandwich",...) |
où les "..." serait la définition de ma fonction LocalEvent (LocalEvent As Function n'existe pas)
Code:
LocalEvent=MsgBox "JambonBeurre"
En résumé, je n'arrive pas à interrompre une routine appelée pour dérouler une partie de code local
C'est clair ou pas ?:oops: