Sub Lister_Formules()
Dim ws As Worksheet, j&, k&, p&, formules(), rng1 As Range, rng2 As Range
Dim TabNoms() As String
If ThisWorkbook.Names.Count > 0 Then
ReDim TabNoms(1 To ThisWorkbook.Names.Count)
For k = 1 To ThisWorkbook.Names.Count
TabNoms(k) = ThisWorkbook.Names(k).Name
Next k
p = UBound(TabNoms)
End If
For Each ws In ActiveWorkbook.Sheets
If ws.ListObjects.Count > 0 Then
ReDim Preserve TabNoms(1 To p + ws.ListObjects.Count)
For k = 1 To ws.ListObjects.Count
TabNoms(p + k) = ws.ListObjects(k).Name
Next k
p = UBound(TabNoms)
End If
Next ws
j = 1
ReDim formules(1 To 3, 1 To j)
formules(1, j) = "Nom feuille"
formules(2, j) = "Adresse"
formules(3, j) = "Formule avec nom"
For Each ws In ActiveWorkbook.Sheets
Set rng1 = Nothing
On Error Resume Next
Set rng1 = ws.Cells.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Not rng1 Is Nothing Then
For Each rng2 In rng1
If rng2.MergeArea(1).Address = rng2.Address Then
For k = 1 To p
If InStr(rng2.FormulaLocal, TabNoms(k)) > 0 Then Exit For
Next k
If k <= p Then
j = j + 1
ReDim Preserve formules(1 To 3, 1 To j)
formules(1, j) = rng1.Parent.Name
formules(2, j) = rng2.Address(0, 0)
formules(3, j) = "'" & CStr(rng2.FormulaLocal)
End If
End If
Next rng2
End If
Next ws
Sheets.Add
'[A1:C1] = Array("Nom feuille", "Adresse", "Formule")
[A2].Resize(UBound(formules, 2), UBound(formules, 1)).Value = Application.Transpose(formules)
End Sub