Classement par catégories

@MFerrand

ah oui, t'as raison ! j'avais complètement oublié qu'l'espace était l'séparateur par défaut ! mes excuses !

j'ai pas compris ton NB : comme on est fin juin, l'hiver est fini depuis longtemps ! et même si c'était l'hiver, pourquoi une télé ne pourrait pas tomber en panne en hiver ? pa'c'qu'y'a pas risque de surchauffe des circuits électriques comme en été ?

dhany

@Theze

merci pour ton info, même si elle est en doublon avec celle de MFerrand.

dhany

@Dhany

On ne peut rien exclure, mais les probabilités de panne sont faibles, voire très faibles sinon carrément négligeables, sauf problèmes de réseau électrique, lesquels ne sont pas négligeables en saison cyclonique, laquelle se situe en été, de novembre à avril dans l'hémisphère Sud...

Je t'accorde que le réchauffement climatique tend à produire un nombre croissant de situations atypiques mais les stats n'en sont pas encore bouleversées.

merci pour ton info, même si elle est en doublon avec celle de MFerrand.

Oui, c'est pour ça que j'ai précisé n'avoir pas rafraîchi le message avant de posté

@MFerrand

oui, maint'nant qu'tu parles de l'hémisphère Sud, j'me souviens qu't'habites pas en France mais dans un lointain p'tit coin d'paradis terrestre ! petit veinard !!! (quoiqu'les saisons cycloniques, c'est quand même un peu dangereux ! et si ta télé s'envole par la fenêtre, tu pourras plus regarder l'journal télévisé ! )

dhany

@Theze

alors pour que t'oublies plus la touche F5, j't'offre un petit rafraîchissement :

screen

« L'abus d'alcool est dangereux pour la santé, consommez avec modération »


@MFerrand : t'es invité aussi, bien sûr !

dhany

Merci, j'arrive

Merci pour l'info je pensais avoir fait une boulette

Bah écoute tout à l'air de rouler

Je vais faire une simulation grandeur nature pour valider tout ça !

je reviendrai vers toi pour te dire en tout cas merci pour le coup de paluche !!!!

Salut !

Bon premier retour sur ma simulation

Un petit souci chez mes juniors , je n'arrive pas à détecter mon 1er junior dans l'onglet

et une petite coquille par rapport à mes équipes (certaines ne sont classés qu'avec des masculins)

pour le reste ça à l'air tout bon

j'ai jeté un oeil à la macro je n'arrive pas à trouver ou ça merdouille

bonne journée

Je viens de faire une fausse manoeuvre qui a détruit le message où j'indiquais mes premiers tests...

Je ne vais pas le réécrire ce soir ! Il vaut mieux que j'arrête. Très bizarre et je ne trouve pas d'explication pour le moment...

@+

pas de soucis c'est pas a la minute ....en effet c'est curieux que ça réagisse comme ça mais bon y'a pas de problèmes sans solutions.

bonne soirée .

Bonjour,

Pas eu le loisir de reprendre mes tests... mais je n'oublie pas. @+

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.

Ah oui effectivement ....ça marche tout de suite mieux

J'étais passé dessus mais je m'étais pas posé la question pensant que ça n'avait aucune incidence d'une ligne a l'autre...

bon du coup c'est cool je comprends un peu mieux le fonctionnement et du coup je progresse sur les macros

Bon dimanche

On continue ! Là j'avais une assez bonne idée de ce que je cherchais : pour les cadets traités en premier, il n'y avait pas de femmes, je pensais donc pouvoir en conclure, comme ensuite, il n'y avait qu'un seul junior, que l'absence de cf créait un décalage d'une ligne qui aboutissait à la disparition du junior...

Ce qui paraît se confirmer : sur la ligne de démarrage (ligne 2 du tableau de données), on initialise dC et fC sur cette ligne (dC = ligne début catégorie, fC = ligne fin catégorie). Si dC correspond à la catégorie hommes à traiter au départ, on recherche la ligne de fin de la catégorie (puis on extrait les données de dC à fC...). On incrémente alors dC à fC+1 pour traiter la même catégorie femmes.

Si pas de représentants hommes, dC n'a pas varié, on repart donc de la même ligne pour les femmes.

Pas de problème à ce stade (sauf un test que l'on ne dépasse pas la longueur du tableau, ce qui pourrait se produire si absence de femmes dans la dernière catégorie traitée, et provoquerait une erreur)

On traite donc les femmes à la suite dans les même conditions, mais si absence de femmes, on a incrémenté dC et fC sur une ligne appartenant à une autre catégorie non encore traitée. Or, en alignant i sur fC pour passer à la catégorie suivante, si on ne compense pas l'incrémentation de fC on aura sauté une ligne !

D'où le correctif :

        If LCase(aa(dC, 8)) = Cat(c + 1) Then
            Do While fC + 1 <= UBound(aa)
                If aa(fC + 1, 8) = Cat(c + 1) Then fC = fC + 1 Else Exit Do
            Loop
            ReDim TCatF(fC - dC)
            For j = 0 To fC - dC
                TCatF(j) = WorksheetFunction.Index(aa, dC + j, col)
            Next j
            CatExist(1) = True
        Else
            fC = fC - 1
        End If
noF:

Si pas de femmes, on introduit un Else dans l'instruction conditionnelle pour désincrémenter fC.

Cela m'a l'air de rétablir le résultat, mais tu pourras me le confirmer...

Je te remets le fichier rectifié, au cas où...

Cordialement.

Bonjour

Bon j'ai testé tout ça à priori plus de souçis ...le fichier roule tout seul ou presque ...

gain de temps sur une simulation grandeur nature (faite ce week end...) de 40mn a 1 heure en temps normal pour obtenir le classement nous somme passé à 20-25 mn (avec deux ou trois vérifications que l'on oubliait rien ).

A terme, on devrait arrivé à 15 mn avec l'habitude .

génial on se simplifie la vie avec ce tableur

te remerciant pour le temps passé

bonne journée à toi !

Merci de ton retour ! Bonne continuation.

Et bonne journée aussi !

Rechercher des sujets similaires à "classement categories"