Un problème réglé je crois, pour les équipes !
Faut croire que c'était trop gros pour le voir en l'ayant sous les yeux !
For j = 0 To 3
Eqp4 = Eqp4 + IIf(aa(dE + j, 5) = "M", 1, 2)
Next j
If Eqp4 > j And Eqp4 < j * 2 Then
Eqp4 = j - 1: MF = True
Else
Do While dE + j <= fE
Eqp4 = Eqp4 + IIf(aa(dE + j, 5) = "M", 1, 2)
j = j + 1
If Eqp4 > j Or Eqp4 < j * 2 Then
Eqp4 = j - 1: MF = True: Exit Do
End If
Loop
End If
Tout se passe sur ce bout de code, ce que je savais depuis le début...
1re phase : une boucle où l'on cumule pour les 4 premiers, 1 si M et 2 si F.
En sortie de boucle j de 0 à 3, j est incrémenté et vaut 4. Si notre cumul vaut 4, il y a 4 M, pas bon ! s'il vaut 8, il y a 4 F, pas bon non plus ! Entre les deux, de 5 à 7 ( ) il y a mixité.
D'où le test : If Eqp4 > j And Eqp4 < j * 2 Then
Il faut savoir que j'avais par erreur mis Or au lieu de And dans ma première rédaction, et le résultat n'était évidemment pas bon à l'arrivée. Et je l'avais rapidement rectifié.
Mais lorsque c'est pas bon et que l'on n'a pas épuisé les membres du club on poursuit, c'est la boucle Do... Loop qui suit, et à chaque étape on reteste : ce test est identique au premier, sauf que là j'avais oublié de rectifié et c'est resté à Or, et le hasard fait que cela n'a pas eu d'incidence lors des cas traités, qui soit étaient bon avec les 4 premiers, soit l'étaient avec le 5e ce qui masquait l'erreur au niveau du test.
Do While dE + j <= fE
Eqp4 = Eqp4 + IIf(aa(dE + j, 5) = "M", 1, 2)
j = j + 1
If Eqp4 > j And Eqp4 < j * 2 Then
Correction simple donc, remplacer Or par And dans la condition incluse dans la boucle Do... Loop.
Il reste encore un problème à voir, je vais le mettre à l'étude. A suivre...
Bon dimanche.