Bonjour, est-il possible qu'une fonction renvoie une valeur de type Range.
Dans ma fonction Macro1(), je veux lancer la fonction sans argument FindTable() et retourner le tableau trouvé dans la variable FindTable

Puis rentrer ce paramètre dans une autre fonction en argument : Call CleanTable(FindTable)

Cependant, je ne dois pas avoir la bonne syntaxe pour retourner un paramètre, l'erreur est surement à la ligne : Set FindTable = Call FindTable. Mais je ne vois pas comment écrire

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Sub Macro1()
    Dim Sh As Worksheet
    Dim FindTable As Range
 
    Chemin = ThisWorkbook.path
    Set Sh = ThisWorkbook.Sheets("Sheet1")
 
    Cells.Clear
 
    Set FindTable = Call FindTable
 
    Call CleanTable(FindTable)
 
End Sub
 
Function FindTable() As Range
    Dim Sh As Worksheet
    Dim CellFind As Range
    Dim RefCell As String
 
    RefCell = "Today date"
 
    Chemin = ThisWorkbook.path
    Set Sh = ThisWorkbook.Sheets("Sheet1")
    Workbooks.Open (Chemin & "/Classeur_travail.xlsx")
 
    Set CellFind = Workbooks("Classeur_travail.xlsx").Worksheets("Sheet2").Cells.Find(RefCell, LookIn:=xlValues, SearchOrder:=xlByRows, MatchCase:=False)
 
    FindTable = Workbooks("Classeur_travail.xlsx").Worksheets("Sheet2").Rows(CellFind.Row + 1 & ":" & CellFind.Row + 6)
 
    Workbooks("Classeur_travail.xlsx").Close
End Function