Combinaison répetter

Résolu
albinw Messages postés 11 Statut Membre -  
albinw Messages postés 11 Statut Membre -
Bonjour, nouveau sur le forum, je suis un homme j'ai 41 ans, et j'ai un don pour vouloir trouver des problèmes aux quels je n'ai pas de solution, c'est pour cela que je m'adresse à vous.
voila ma question: comment trouver une combinaison de 3 et 4 chiffres qui ressorte le plus souvent d'après une plage de cellules don chaque ligne contient 5 chiffres.

merci pour vos réponses.

12 réponses

Raymond PENTIER Messages postés 71823 Statut Contributeur 17 376
 
Bonjour.

J'ai un peu de mal à comprendre. Alors envoie un fichier-exemple, en ajoutant à la main les résultats qu'excel devrait trouver.
0
albinw Messages postés 11 Statut Membre
 
Bonjour Raymond, merci de ton intérêt.
Je ne sais pas comment on envoie un fichier, si tu peut me décrire la marche à suivre.
0
Ricky38 Messages postés 5776 Statut Contributeur 1 462
 
Salut,


tu vas sur le site https://www.cjoint.com/ et tu déposes ton fichier, ensuite tu colles ici le lien qu'il t'aura généré ;)
0
albinw Messages postés 11 Statut Membre
 
0
Raymond PENTIER Messages postés 71823 Statut Contributeur 17 376
 
Tu n'as répondu qu'à la moitié de ma demande : tu as envoyé les données, mais aucun exemple de ce qu'on devrait obtenir.
Pour toi c'est certainement très clair, mais pour nous que faut-il entendre par "combinaison de 3 chiffres" ? Déjà ton tableau ne comporte pas que des chiffres (de 0 à 9) mais aussi des nombres (plus grands que 9).
Ensuite est-ce pour toi 15-1-13-11-9 est la même combinaison que 11-9-15-1-3 ? ou que 1-13-15-11-9 ? ou que 15-11-1-9-13 ?
0
albinw Messages postés 11 Statut Membre
 
voici un exemple qui devrait être plus claire, je l'espère.
https://www.cjoint.com/?BHdqHOehGLv
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 71823 Statut Contributeur 17 376
 
Oui, c'est plus clair.
Il y a effectivement davantage de combinaisons quand les 3 nombres peuvent avoir n'importe quel ordre : j'estime qu'il faudrait procéder à plus de 3000 comparaisons !
Chaque ligne offre 8 combinaisons ; les 8 combinaisons de la ligne 1 doivent être comparées aux 27 autres lignes ; les 8 combinaisons de la ligne 2 doivent être comparées aux 26 lignes suivantes ; les 8 combinaisons de la ligne 3 doivent être comparées aux 25 lignes suivantes ; etc.
Et je n'ai pas trouvé la procédure qui permettrait de faire ces comparaisons automa-tiquement. Il y a certainement un moyen avec VBA ; alors attends qu'un spécialiste des macros t'en écrive une ...
0
albinw Messages postés 11 Statut Membre
 
Merci de ton intérêt Raymond,je vais continuer à creuser,creuser....
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
bonjour à tous les deux

si tu pouvais envoyer ton fichier au format excel 2003 (fichier/enregistrer sous/ etc ...)

bonne suite
0
Raymond PENTIER Messages postés 71823 Statut Contributeur 17 376
 
Tiens, vieux frère : https://www.cjoint.com/?BHepbeqzTH1
0
JvDo Messages postés 2012 Statut Membre 859
 
Bonjour à tous,
Voici une solution qu'il faudra peut-être amender si les entiers dépassent 99.
Il s'agit de "binariser" chaque combinaison de 3 nombres parmi 5 en sommant les puissances de 2 élevées à la valeur des entiers de la combinaison.
Chaque combinaison aura donc une signature unique indépendante de l'ordre.
Ex : {10, 3, 7} donnera 2^10+2^3+2^7

Remarques : les combinaisons peuvent se présenter sous forme d'un tableau 3x10 où chaque colonne représente les indices utilisés pour faire la combinaison. Ainsi {1;4;5} est la combinaison comprenant le premier, le quatrième et le cinquième entier d'une ligne de données.
Dans la formule ci-dessous, la matrice est représentée en ligne, d'où la présence des "\" entre les accolades.
Les données soont en $C$7:$G$34.


Tu sélectionnes donc une zone de 10 colonnes (autant que de combinaisons)
sur autant de lignes qu'il y a de données (j'ai identifié cette zone par le nom signatures dans les formules) et tu saisis la formule matricielle :
=2^INDEX(DECALER($C$6,LIGNE(INDIRECT("1:"&LIGNES($C$7:$G$34))),0,1,5),{1\1\1\1\1\1\2\2\2\3})+2^INDEX(DECALER($C$6,LIGNE(INDIRECT("1:"&LIGNES($C$7:$G$34))),0,1,5),{2\2\2\3\3\4\3\3\4\4})+2^INDEX(DECALER($C$6,LIGNE(INDIRECT("1:"&LIGNES($C$7:$G$34))),0,1,5),{3\4\5\4\5\5\4\5\5\5})

Tu obtiens donc un tableau des signatures de toutes les combinaisons de 3 nombres .
Il suffit d'utiliser la fonction MODE() sur ce tableau des signatures pour obtenir celle qui se répète le plus souvent puis terminer par une extraction des puissances de 2 la composant.
Pour cette étape, je suis passé par les log en base 2 mais ça peut se faire autrement :
=ENT(LOG(MODE(signatures),2))   
=ENT(LOG(MODE(signatures)-2^ENT(LOG(MODE(signatures),2)),2))   
=ENT(LOG(MODE(signatures)-2^ENT(LOG(MODE(signatures),2))-2^ENT(LOG(MODE(signatures)-2^ENT(LOG(MODE(signatures),2)),2)),2))


Je te laisse tester.

Cordialement

PS : https://www.cjoint.com/?BHepFgRE5i3
Dans cette feuille, il y a 2 façon de faire : une matricielle (tableau jaune) et une "simple" qui s'appuie sur le tableau des combinaisons.

PS bis : je suis en format américain, il faut donc remplacer les virgules par des points-virgules dans les formules!
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
une tentative en VBA mais qui permet de faire varier la taille p de la combinaison cherchée (un brin laborieuse et ..... sans garantie)
https://www.cjoint.com/?0HevXbFMx2A

> raymond
tu parles d'un cadeau .....
0
Mytå Messages postés 4246 Statut Contributeur 954
 
Salut le forum

CCM81, tu n'a pas encore installé le Pack de compatibilité Microsoft Office
pour ouvrir les fichiers des versions 2007-2012.

Mytå
0
albinw Messages postés 11 Statut Membre
 
salut je vous remercie les deux solution ont l'air de fonctionner, je les teste cette semaine, j'ai plus le temps de le faire maintenant, en tous cas chapeau et encore merci.
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
bonjour

Une tentative qui permet de faire varier le nombre de lignes et de colonnes de la BD, ainsi que la taille de la combinaison
https://www.cjoint.com/?0HglXWUTCWa

@Mytå.
Non, je n'ai pas installé la pack de compatibilité, je suis sous Vista qui n'est pas d'une stabilité à toute épreuve et je me méfie des patchs (non indispensables) de microsoft. De plus, je pense que le demandeur peut faire l'effort de convertir au format excel 2003.
Merci en tout cas de t'être penché sur mon cas

bonne suite
0
albinw Messages postés 11 Statut Membre
 
bonsoir, ccm81, je me tourne vers toi un an après, voilà !, je n'arrive pas a modifier le programme génial que tu ma fais(https://www.cjoint.com/?0HglXWUTCWa pas étonnant vu mon niveau en VBA . ce que j'aimerai ce serai de créer 20 colonnes max au lieu de 10 si cela est possible, quelle que soit ta réponse un grand merci d'avance.
0
albinw Messages postés 11 Statut Membre
 
cette fois c'est la bonne https://www.cjoint.com/c/CHnwfrnUM4u
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
Pas le temps de faire mieux en ce moment
Je me suis contenté de modifier la valeur de la constante cotc à 22 (au lieu de 12), j'ai inséré 10 colonnes dans la feuille avant la colonne OK et j'ai allongé la liste des valeurs de n (en F4)
Pas de test approfondi, et sans garantie!!!
https://www.cjoint.com/?3HpvhCczhew
Bonne fin de journée
0
albinw Messages postés 11 Statut Membre
 
Bonjour ccm81, le programme fonctionne , un message d'erreur apparait une fois les combinaisons trouvées mais le résultat est la ,donc c'est pas gênant. merci pour ton aide et bon weekend .
0
albinw Messages postés 11 Statut Membre
 
merci ccm81 ton prog fonctionne nickel,c est exactement ce que je voulais.
0