> %PrintProbleme(&TableContraintes, org, %SUPERQ(org eq
> 0 or org eq .), "Rejet1 : org=0", 1);
> 
> I have trouble withe the parameter : org eq 0 or org
> eq .
I won't argue about the wisdom of using a macro here, but just point out 
1 in sql[pre]  org eq 0 or org is null [/pre]may perform better
2 in data step[pre]   (if org) [/pre] selects non-missing and non-zero data
3 in macro language superq() expects a macro variable (, or macro name) as the parameter, and not plain syntax [pre]   %str( org eq 0 or org = . ) [/pre] might provide adequate protection for that dot. An alternative providing slightly stronger protection than %str() is %quote().
Error handling of the failing parameter will (probably) be complicated by the internals of your macro %PrintProbleme.
Since this simple use without macro protection of your filter syntax [pre]      %let BC =
               org eq 0 or org = . 
      ;[/pre] works just fine outside a macro... see this log[pre]51         %let BC =
52                  org eq 0 or org = .
53         ;
54   DATA ;
55    INPUT ORG REP$ ;
56   LIST;CARDS;
RULE:      ----+----1----+----2----+----3----+----4----+----5----+----6----
57         1 REP1
58         2 report2
59         . empty
60         0 return-code-OK
NOTE: The data set WORK.DATA4 has 4 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
61   ;
62   option symbolgen mlogic mprint ;
63   data cases;
64   set ;
SYMBOLGEN:  Macro variable BC resolves to org eq 0 or org = .
65    if &bc ;
66   run;
NOTE: There were 4 observations read from the data set WORK.DATA4.
NOTE: The data set WORK.CASES has 2 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds[/pre] 
I'm assuming the problem you get is caused by the handling of the parameter, rather than that dot in the value of the parameter.
 
Good Luck
PeterC