Tu ne comprends pas que pour faire fonctionner selon une autre méthode, il faut rebâtir pour que l'ensemble fonctionne autrement... !
Il y a peut-être une méthode plus bénigne : faire une macro sous forme de fonction personnalisée, que tu introduis là où tu risques d'avoir une chaîne multiligne à traiter, dans les formules concernées.
Function LISTER(txt As String)
Dim Lst() As String, tx, i%, n%
Application.Volatile
tx = Split(txt & Chr(10), Chr(10))
n = Application.Caller.Rows.Count - 1
ReDim Lst(n, 0)
For i = 0 To UBound(tx)
If i <= n Then
Lst(i, 0) = tx(i)
Else
Exit For
End If
Next i
LISTER = Lst
End Function
Cette fonction s'utilise comme les fonctions d'Excel.
Au cas particulier, tu vas par exemple l'utiliser sur la formule en B9. Je suppose que tu as bien coloré en jaune le nombre de lignes potentiellement utilisables. Donc tu sélectionnes préalablement la plage B9:B11. La formule qui s'y trouve déjà apparaît :
=SIERREUR(RECHERCHEV($G$3;TABLEAU_NC;12;FAUX);"")
La fonction LISTER a comme argument la chaîne éventuellement à éclater, qui dans ta formule est renvoyée par RECHERCHEV.
Tu modifies la formule pour que cette chaîne soit en argument d'une fonction LISTER :
=SIERREUR(LISTER(RECHERCHEV($G$3;TABLEAU_NC;12;FAUX));"")
Ceci fait tu valides, mais LISTER étant une fonction matricielle, tu valides la formule matriciellement par la combinaison de touches Ctrl+Maj+Entrée. La formule s'encadre d'accolades et le résultat apparaît.
Tu fais la même chose partout où tu as coloré en jaune...
Ton fonctionnement reste un fonctionnement par formules. Et le doc change quand tu modifies G3.
Cordialement.