LOCAL cOrdre,; nOrdre,; cSql nOrdre = THIS.cboordre_resident_chambre1.VALUE SET TEXTMERGE TO MEMVAR THIS.ListResident.ROWSOURCE NOSHOW ON \SELECT LEFT( T.cnomteleph , 20 ) + ' - F.' + TRANSFORM( Ve.cnofact , "99999999" ) AS cName, \\ Ve.iid,; \\ PADR( IIF( ISNULL( Chambre.iid ) , '' , ALLTR( Chambre.cnom )+ \\ IIF( Chambre.nnolit > 1 , '-' + TRANS( R.nnolit , '@KZR 9' ) , '' ) ) , 6 ) AS cchambre \\ FROM amline!cfiltre cf INNER JOIN amline!Vente Ve ON Ve.iid = cf.itelephoneid \\ JOIN amline!Teleph T ON Ve.itelephoneid = T.iid \\ JOIN amline!Resident R ON T.iid = R.itelephoneid \\ LEFT JOIN amline!Chambre ON Chambre.iid = R.ichambreid \\ WHERE Cf.lactif = .T. AND cf.ireport == <<goapp.noreport>> \\ ORDER BY DO CASE CASE nOrdre = 3 \\ cNofact CASE nOrdre = 2 \\ cChambre OTHERWISE \\ cName \\ INTO CURSOR cNames SET TEXTMERGE TO && This fill ROWSOURCE * THIS.ListResident.REQUERY() remove this * IF THIS.ListResident.LISTCOUNT > 0 remove this THIS.ListResident.LISTINDEX = 1 * ENDIFThe limit is 8192, therefore you must be thrifty.