VBA-Regroupement (suite fichier de h2so4)

Bonjour,

J'essaye de travailler sur le fichier de h2so4 "classement" (merci pour ce code), pour tenter de regrouper en solo ou en duo une base, par le VBA, et dans le même esprit que précédemment.

En vain !

S'il passe par ici et voit de la lumière, ce serait sympa de m'aider car je sèche. (je joins un exemple bisounours!)

merci d'avance.

22regroupement.xlsx (10.75 Ko)

bonjour,

je ne vois pas de lumière pour le moment.

edit : je joins le fichier que notre ami Robinet a mentionné.

7essai-robinet.xlsm (23.09 Ko)

Bonjour

Je ne suis pas pressé....et merci d'avoir regardé mon fichier.

(c'est pas simple, j'ai essayé d'adapter le code de ton fichier "essai" qui faisait un alignement sur 5 colonnes que tu m'avais créé mais.......)

a+

Si la lumière permet de comprendre le problème posé (comment doit-on faire les regroupements sur chaque ligne), alors effectivement,je suis dans le schwarz total moi aussi...

Une petite loupiote ? A+ Daniel

Bonjour,

A quoi ça peut bien servir ton truc ?

J'ai bien une idée que j'ai démarrée mais c'est quoi la meilleure solution pour toi si on a sur les 3 colonnes un total de :

  • 2 2 2 contre 4 2 0 ? soit un total global de 6 plus ou moins bien réparti.
  • 2 2 2 contre 7 0 0 ? soit un total global supérieur mais complètement déséquilibré entre les colonnes. Normalement 7 0 0 serait meilleur...

Et si dans une colonne tu as 3 valeurs identiques et 4 autres identiques, tu ne considères que le 4, tu ne cumules pas 4-3 ?

eric

Bonsoir

Sorry je reponds sur mobile

Dans mes sujets il y a "macro vba" avec en bas le fichier de h2so4 essai.xlm qui regroupe les nombres dans 5 colonnes chaque colonne a des nombres identiques

Je veux faire idem mais sur 3 col seulement donc 2 col ont un duo

Bonne soiree et merci

Ca ne répond pas à mes questions...

eric

Je suis sur mobile pas facile

Precision le resultat dans mon ex est une solution parmi beaucoup,il suffit d inverser 2 nb de 2 col diffrentes dans toutes les lignes et ce sera correct aussi

A quoi correspond 7 0 0? 5 nb en 3 col en duo ou solo cest 221 ou 122 ou 212

Bonne soiree

ça correspond au nombre de nombres identiques dans les colonnes G, H, I.

eric

Bon, j'ai fait à mon idée alors...

Il n'y a pas d'algorithme pour traiter ton problème et avoir à coup sûr la meilleure solution.

Méthode utilisée : tirage aléatoire et on retient la meilleure solution générée.

Je compte le nombre de répétition maxi dans chaque colonnes, une solution est considérée comme meilleure si la somme des 3 compteurs est supérieure.

On pourrait envisager de remplacer la solution retenue par une équivalente avec un meilleur écart-type des compteurs. Mais tout ajout ralenti et le but est d'explorer le maximum de solutions dans un minimum de temps.

Plus tu laisses tourner, plus tu augmentes donc tes chances d'améliorer la solution.

  • double-clic en F1 pour lancer le bouzin, un autre pour l'arrêter quand ta patience a atteint ses limites
  • en G1:I1 les compteurs de nombres identiques dans la colonne (entre parenthèses le nombre répété).
  • en J1 le nombre de tirages aléatoires (pour voir que ça tourne bien)

eric

Bonjour,

D'abord :

"... il suffit d inverser 2 nb de 2 col différentes dans toutes les lignes et ce sera correct aussi..." j'ai écrit une conn.......hier soir !

Merci Eric pour ta solution, c'est une possibilité d'y arriver et le code est complexe.....

=> j'ai apporté une remarque au niveau des compteurs qui pourrait aider à ne pas mélanger les nombres identiques dans plusieurs col différentes? (si j'ai bien compris tes compteurs) et qui pourrait aider à trouver la solution plus rapidement? (enfin je crois?)

ex: dans mon cas, nombres diff. dans ma base de 1 à 12, on a 4 nb différents par col G H I donc si les compteurs sont 4 4 4 c'est gagné. (3 paquets de 4 nb différents)

si j'avais 60 nb différents. dans ma base, alors 20 20 20 ( ou le plus approchant !!! ) en compteur de résultat.

PS : En ajoutant 4 lignes de base, GHI n'en a pas tenu compte, le résultat s'arrête en ligne 11 ?

merci et bonne soirée à tous.

a+

Je vois que tu as choppé au vol une version intermédiaire.

Petits changement dans la version en ligne : plus de commentaire, le nombre max est ajouté entre () derrière les compteurs qu'il soit visible en permanence.

Il peut y avoir problème si ce sont les mêmes nombres dans des col différentes?:

Pour moi il n'y en a pas, la macro ne regarde pas ça.

Maintenant si c'est une règle supplémentaire que tu ajoutes il faut l'expliquer en détail et voir si c'est réalisable facilement ou pas.

ps: j'ai voulu ajouter 4 lignes dans la base, G H I ne s'est pas rempli? Il s'arrête à la ligne 11.

Si j'ajoute des lignes en A:E la macro en tient bien compte.

les compteurs pourraient compter le nombre max de nombres absents des 2 autres colonnes?

si on voit mon exemple fourni, la colonne G avait 4 8 10 2 , la H 1 3 5 7 et la I 6 11 12 9 et 6 (donc différents)

( donc 3 paquets de 4 nb différents)

Rien compris, désolé.

A quoi ça sert ton truc ? Ca m'aidera peut-être à mieux comprendre le besoin.

Mais j'ai l'impression que ça n'a rien à voir avec Le résultat doit apporter un maximum de nombres identiques dans chacune des 3 colonnes G,H et I et que rien (du code) n'est récupérable.

eric

Robinet a écrit :

Bonjour

Je ne suis pas pressé....et merci d'avoir regardé mon fichier.

(c'est pas simple, j'ai essayé d'adapter le code de ton fichier "essai" qui faisait un alignement sur 5 colonnes que tu m'avais créé mais.......)

a+

combien de lignes auras-tu dans ton fichier (environ) ?

Bonjour h2so4,

pas beaucoup, environ 35 lignes mais une cinquantaine de nombre différents (au lieu de 12 dans mon exemple, 3X4 ce qui facilitait la chose !!)

le code d'Eric basé sur l'aléa peut arriver au résultat, mais à mon avis, il faut voir les compteurs ?

Dans mon exemple, je n'ai pas de nombre commun aux 3 colonnes mais je n'arrive pas à lui expliquer? C'est ton principe d'alignement mais sur 3 colonnes.

Merci

bonne soirée

Quelque chose m'échappe là.

Tu demandais des regroupements et 'Le résultat doit apporter un maximum de nombres identiques dans chacune des 3 colonnes G,H et I'

Ce n'est pas ce que tu voulais ???

eric

Bonjour à tous,

à Eric:

'Le résultat doit apporter un maximum de nombres identiques dans chacune des 3 colonnes G,H et I'

dans CHACUNE, donc un nombre dans une colonne ne se trouve pas dans les 2 autres.

Dans mon exemple, le 4 par ex est en G mais jamais en H ou en I (bien sûr, ce fichier exemple est bisounours, il faut s'approcher du max possible dans le rangement), d'où mon idée de modifier le test des compteurs.

merci

Bon lundi

Bonjour,

partant de l'idée d'Eriic, une solution basée sur un algorithme darwinien. ne garantit pas le meilleur résultat mais sélectionne les meilleurs candidats, leur applique des mutations pour finir par garder celui est le mieux adapté.

à voir si cela peut convenir

Bonjour

Merci encore à vous deux, je ne connaissais pas cet algo !! et ces mutations (génétiques?)

je vais tester ce soir.

à quoi correspond le nombre en J1? et le nombre de souches à 300? (c'est 5X60 ?

merci

bonne soirée

Bonjour,

dans CHACUNE, donc un nombre dans une colonne ne se trouve pas dans les 2 autres.

Ok, mais bon, il y avait plusieurs lectures possibles. Celle-ci je la découvre, elle ne m'a pas sauté aux yeux

une solution basée sur un algorithme darwinien

Je ne connaissais pas non plus, ça a l'air très intéressant.

J'ai de la lecture pour plusieurs jours

Si tu as des liens qui t'ont parus bien sur le sujet je suis preneur.

eric

Robinet a écrit :

Bonjour

à quoi correspond le nombre en J1?

le score de la meilleure souche

et le nombre de souches à 300? (c'est 5X60 ? non, c'est

un nombre suffisamment grand pour avoir assez de matériel génétique différent, mais pas trop grand pour ne pas trop ralentir l'algorithme. à chaque génération toutes les souches sont passées en revue pour déterminer celle qui donne le meilleur résultat (J1) puis mutées pour essayer d'obtenir un résultat encore meilleur.

merci

bonne soirée

bonne soirée

Rechercher des sujets similaires à "vba regroupement suite fichier h2so4"