Ok c'est normal :
Quand tu fais un EXEC, tu es dans un autre environnement d'exécution. Dans ce nouvel environnement, la variable @BRACT n'a jamais été déclarée, ça provoque donc une erreur.
La solution, c'est une table temporaire avec un INSERT...EXECUTE:
DECLARE @BRACT varchar(1)
SET @BRACT = 'N'
CREATE TABLE #TMP (c varchar(1))
INSERT INTO #TMP EXEC ('SELECT blabla FROM Entreprises_Af')
SELECT TOP 1 @BRACT = c from #TMP
PRINT @BRACT
DROP TABLE #TMP
ça n'est pas très élégant, mais je ne vois pas d'autres solution...