I should have specified... sorry about that...

I tried to remove the IIF as you said and replacing it by a classic IF ELSE statement. It started to work like a charm !

Sub RAPPORT1()

Dim WS As Worksheet
Dim Para As Variant
Dim i As Integer
Dim a As Integer

Set WS = ActiveSheet

Para = Array(2, 3, 4, 5, 6, 11, 12)

For i = LBound(Para) To UBound(Para)
    a = WS.Shapes("BtnRAP1P" & Para(i)).TopLeftCell.Row
    If Range("L" & a).Value = FAUX Then
    WS.Shapes("BtnRAP1P" & Para(i)).Visible = True
    Else
    WS.Shapes("BtnRAP1P" & Para(i)).Visible = False
    End If
    Next i

End Sub
I tried to put the FAUX between "" and my buttons stopped appering and desapearing as i wanted... weird a bit... but my excel is in french ant all the coding ids done in english so maybe this is why it accepts the FAUX as is...

Anyway, thank for your help !