Transformer procédure en Fonction
Bonjour le Forum,
Je me retrouve à nouveau confronté à un petit souci, je vous explique:
j'ai 3 sub:
- Sub1
- Sub2
- Sub3
et la 4ème à faire évoluer (Sub4)
voici mon code de la Sub4:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| Sub Recherche()
Dim c As Range, Plage As Range
Dim Mot As String, cmpt As Byte
Dim MotsRecherches As Variant
Dim I As Integer
Dim ShCible As Worksheet
Dim LigneFeuilleCible As Long
' Feuille cible
Set ShCible = Sheets("Feuille1")
LigneFeuilleCible = ShCible.Cells(ShCible.Rows.Count, 2).End(xlUp).Row + 1
MotsRecherches = Array("Mot1", "Mot2", "Mot3", "Mot4", "Mot5", "Mot6")
'Feuille cible
Set Plage = Sheets("Feuille5").UsedRange
With ShCible
For I = LBound(MotsRecherches, 1) To UBound(MotsRecherches, 1)
Set c = Plage.Find(What:=MotsRecherches(I), LookAt:=xlPart)
If Not c Is Nothing Then
.Cells(LigneFeuilleCible, 2) = MotsRecherches(I)
Exit For
End If
Set c = Nothing
Next I
End With
Set Plage = Nothing
Set ShCible = Nothing
End Sub |
Ce que je souhaite faire est de faire évoluer ceci en Feuille2 ou Feuille3:
Code:
1 2
| ' Feuille cible
Set ShCible = Sheets("Feuille1") |
En gros si Sub1 actif alors Feuille1
si Sub2 actif alors Feuille2
Code:
1 2
| ' Feuille cible
Set ShCible = Sheets("Feuille2") |
si Sub3 actif alors Feuille3
Code:
1 2
| ' Feuille cible
Set ShCible = Sheets("Feuille3") |
Pour info, j'active les Sub1,2 et 3 dans un userform grâce à 3 optionbutton, mais le Sub4 se trouve dans un module à part de celui de Usf
Merci d'avance
Seb
Transformer Sub en Fonction
Re et bonjour Vinc_Bilb,
Merci pour ton intéressement,
Je m'en doutais qu'il fallait passer mon Sub4 en fonction :?
Hors, je n'ai jamais fait cela sauf pour de simple fonction
Je ne vois pas par quoi commencer, voici un essai:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| Private Function Recherche()
Dim c As Range, Plage As Range
Dim Mot As String, cmpt As Byte
Dim MotsRecherches As Variant
Dim I As Integer
Dim ShCible As Worksheet
Dim LigneFeuilleCible As Long
' Feuille cible
Set ShCible = Sheets(sheetName)
LigneFeuilleCible = ShCible.Cells(ShCible.Rows.Count, 2).End(xlUp).Row + 1
MotsRecherches = Array("Mot1", "Mot2", "Mot3", "Mot4", "Mot5", "Mot6")
'Feuille cible
Set Plage = Sheets("Feuille5").UsedRange
With ShCible
For I = LBound(MotsRecherches, 1) To UBound(MotsRecherches, 1)
Set c = Plage.Find(What:=MotsRecherches(I), LookAt:=xlPart)
If Not c Is Nothing Then
.Cells(LigneFeuilleCible, 2) = MotsRecherches(I)
Exit For
End If
Set c = Nothing
Next I
End With
Set Plage = Nothing
Set ShCible = Nothing
End Function |
J'imagine que la dedans, il faut que je déclare les feuilles entre parenthèse
Code:
Function Recherche()
Merci encore
Seb