Bonjour bonjour!!!

Alors aujourd'hui j'essaye de faire une recherche multicritère sur une liste d'objet, en fonctions de critères divers et variés donc.

Voici tout d'abord l'affichage de ma liste d'objet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div id="corps">
		  	<div t:type="loop" t:source="isoMsgList" t:value="isoMsg">
			  	<div id="Liste" style="background-color: ${getIsoMsgState()}">
				  			${isoMsg.idMessage}/${isoMsg.horodatage}/${getLibelleType()}
 
			  		<div t:type="loop" t:source="ssMsgList" t:value="isoMSg">
				  		<div id="ListSsMsg" style="background-color: ${getIsoMsgState()}">
				  			${isoMsg.idMessage}/${isoMsg.horodatage}/${isoMsg.exception}/${getLibelleType()}
				  		</div>
			  		</div>
			  	</div>
			  </div>
 
		</div>
Il s'agit donc d'objets messages, chaque objet pouvant contenir des sous messages.

J'ai donc voulu affiner cet affichage en proposant à l'utilisateur de rechercher des messages par types, date d'émission et état de retour du message de la façons suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
	  	<t:form>
		 <p>
         	<label t:type="label" t:for="type"  /> :
         	<input t:type="select" t:id="type" t:model="types" t:value="libelle" style="width: 230px;" />
         	<label t:type="label" t:for="etatRetour" /> :
         	<input t:type="select" t:id="etatRetour" t:model="literal: ok, non-ok"/>
         	<input t:id="dateTimeField1"/>
         	<input t:type="submit" t:name="Rechercher"/>
    	 </p>                      
		</t:form>
Et voici le code java derrière tout ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
	@Persist
	@Property
	private String libelle;
 
	@SuppressWarnings("unused")
	@Component(parameters = { "value=actualDate1",
			"datePattern=dd-MM-yyyy HH:mm" })
	private DateTimeField _dateTimeField1;
 
 
	@Persist
	@Property
	private Date _actualDate1;
 
	@Persist
	@Property
	private String _etatRetour;
 
	Object onSuccess(){
		return BorneDetails.class;		
	}
 
public List<IsoMsg> getIsoMsgList() {
		String error = null;
		try {
			if(_etatRetour == null)
			{
				error = null;
			}
			else if(_etatRetour.equals("ok"))
			{
				error = "false";
			}
			else if(_etatRetour.equals("non-ok"))
			{
				error = "true";
			}
			TypeIso type = null;
			if (libelle !=null){
				type = typeIsoManager.findByLibelle(libelle); 
			}
 
			return (List<IsoMsg>) isoMsgManager.findMultiCritere(bornes.getId(), _actualDate1, type, error);
		} catch (BusinessException e) {
 
			e.printStackTrace();
			return null;
		} catch (TechnicalException e) {
 
			e.printStackTrace();
			return null;
		}
	}
public List<String> getLibelleList() {
		try {
			return typeIsoManager.findLibelle();
		} catch (BusinessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (TechnicalException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
 
	public List<IsoMsg> getSsMsgList() {
 
		try {
			return (List<IsoMsg>) (isoMsgManager.findSsMsg(isoMsg
					.getIdMessage()));
		} catch (BusinessException e) {
			e.printStackTrace();
			return null;
		} catch (TechnicalException e) {
			e.printStackTrace();
			return null;
		}
	}
 
	public String getIsoMsgState() {
		color = service.isoMsgState(isoMsg.getIdMessage());
		return color;
	}
 
	public String getLibelleType() {
		TypeIso type;
		try {
			type = typeIsoManager.findById(isoMsg.getTypeIso().getIdType());
		} catch (BusinessException e) {
			e.printStackTrace();
			return null;
		} catch (TechnicalException e) {
			e.printStackTrace();
			return null;
		}
		return type.getLibelle();
	}
Mais lorsque je tente ma recherche, j'aboutis à l'exception suivante :

[ERROR] borne.BorneDetails Render queue error in BeforeRenderTemplate[borne/Details:type]: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null.
org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.render(ComponentPageElementImpl.java:258)
at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
at $PageRenderQueue_12a561aec35.render($PageRenderQueue_12a561aec35.java)
at $PageRenderQueue_12a561aec2b.render($PageRenderQueue_12a561aec2b.java)
at org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
at org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at $MarkupRenderer_12a561aec34.renderMarkup($MarkupRenderer_12a561aec34.java)
at org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
at $PageMarkupRenderer_12a561aec32.renderPageMarkup($PageMarkupRenderer_12a561aec32.java)
at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
at $PageResponseRenderer_12a561aebd0.renderPageResponse($PageResponseRenderer_12a561aebd0.java)
at org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
at org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943)
at $PageRenderRequestHandler_12a561aebd1.handle($PageRenderRequestHandler_12a561aebd1.java)
at $PageRenderRequestHandler_12a561aebbb.handle($PageRenderRequestHandler_12a561aebbb.java)
at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
at $ComponentRequestHandler_12a561aebc0.handlePageRender($ComponentRequestHandler_12a561aebc0.java)
at org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
at $Dispatcher_12a561aebc3.dispatch($Dispatcher_12a561aebc3.java)
at $Dispatcher_12a561aebb9.dispatch($Dispatcher_12a561aebb9.java)
at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245)
at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at $RequestHandler_12a561aebb0.service($RequestHandler_12a561aebb0.java)
at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197)
at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_12a561aebaf.service($HttpServletRequestFilter_12a561aebaf.java)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at $HttpServletRequestHandler_12a561aebac.service($HttpServletRequestHandler_12a561aebac.java)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:522)
at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:496)
at org.apache.tapestry5.corelib.components.Select._$read_parameter_model(Select.java)
at org.apache.tapestry5.corelib.components.Select.options(Select.java:236)
at org.apache.tapestry5.corelib.components.Select.beforeRenderTemplate(Select.java)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.invokeComponent(ComponentPageElementImpl.java:253)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:941)
... 73 more
[ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception: Render queue error in BeforeRenderTemplate[borne/Details:type]: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null.
org.apache.tapestry5.internal.services.RenderQueueException: Render queue error in BeforeRenderTemplate[borne/Details:type]: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
at $PageRenderQueue_12a561aec35.render($PageRenderQueue_12a561aec35.java)
at $PageRenderQueue_12a561aec2b.render($PageRenderQueue_12a561aec2b.java)
at org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
at org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
at $MarkupRenderer_12a561aec34.renderMarkup($MarkupRenderer_12a561aec34.java)
at org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
at $PageMarkupRenderer_12a561aec32.renderPageMarkup($PageMarkupRenderer_12a561aec32.java)
at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
at $PageResponseRenderer_12a561aebd0.renderPageResponse($PageResponseRenderer_12a561aebd0.java)
at org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
at org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943)
at $PageRenderRequestHandler_12a561aebd1.handle($PageRenderRequestHandler_12a561aebd1.java)
at $PageRenderRequestHandler_12a561aebbb.handle($PageRenderRequestHandler_12a561aebbb.java)
at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
at $ComponentRequestHandler_12a561aebc0.handlePageRender($ComponentRequestHandler_12a561aebc0.java)
at org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
at $Dispatcher_12a561aebc3.dispatch($Dispatcher_12a561aebc3.java)
at $Dispatcher_12a561aebb9.dispatch($Dispatcher_12a561aebb9.java)
at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245)
at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
at $RequestHandler_12a561aebb0.service($RequestHandler_12a561aebb0.java)
at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197)
at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at $HttpServletRequestFilter_12a561aebaf.service($HttpServletRequestFilter_12a561aebaf.java)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726)
at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
at $HttpServletRequestHandler_12a561aebac.service($HttpServletRequestHandler_12a561aebac.java)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.render(ComponentPageElementImpl.java:258)
at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
... 69 more
Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:522)
at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:496)
at org.apache.tapestry5.corelib.components.Select._$read_parameter_model(Select.java)
at org.apache.tapestry5.corelib.components.Select.options(Select.java:236)
at org.apache.tapestry5.corelib.components.Select.beforeRenderTemplate(Select.java)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.invokeComponent(ComponentPageElementImpl.java:253)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:941)
... 73 more
Je pense que cela doit venir du rechargement de ma page sur la fonction onSuccess (je doit dire que je ne suis pas vraiment fan de cette façons de faire, recharger la page avec mes critères en persitants...) Mais je ne trouve pas d'autre moyen de faire...

Quelqu'un aurais une idée? (Je le béni d'avance )