@matthew12333333
Delegation and record limit are two different things. Delegation has to do with sending a query/criteria to a data source for the data source to be able to return records based on that.
Record limit is the limit to how many records you can ever return from a datasource in one function.
PowerApps is limited to 2000 records maximum. You can never return more than 2000 records for any function.
Your formula is using the ForAll backward though. You are using it like a For Loop in some development language - which PowerApps is not.
Your formula should be based on a Filter, not a ForAll with an If. ForAll is a function that returns a table. So trying to do functions in it, although might work, is not how it was designed.
Your formula should be:
Collect(EtapesFermees,
Filter('Etape de traitement demandes DM1',
Etape.Value = "Fermer"
).'ID de la demande'
)
The above is delegable, however, again, delegation and record limits are two different things and the above will only ever return 2000 or less records.
I hope this is helpful for you.