J'ai un tableau binaire de 14 colonnes et 30000lignes environ.
Je recherche la séquence de 7 (minimum ou +) "1", en occurence maximum (ici dans mon exemple c'est la séquence jaune B D E H J K N présentes 4 fois)
Comment puis-je calculer cette séquence max?
Je vous souhaite bien du plaisir.
Avec 7 ou + échantillons tirés sur 14, cela va vous faire la bagatelle de 9908 matrices de 30 000 lignes à construire avant même de rechercher les occurrences max.
Je n'imagine même pas la complexité de la macro et le temps considérable d'exécution.
N'auriez vous pas une autre approche pour résoudre votre problème que ce chemin ?
Quel est le but réel ?
@ALEA()
Des idées, j'en ai. Ce n'est pas ce qui manque.
Avec 1 matrice de 16 lignes : Vous avez la solution en PJ.
( soit dit en passant, votre configuration est présente 7 fois et non 4 )
Ensuite avec 9908 matrices de 30 000 lignes. Je jette l'éponge.
Quoique vous avez raison, aujourd'hui le temps est maussade, vous pouvez vous amuser.
ben si, j'le sais bien, que ALEA() est une fonction qui retourne un nombre aléatoire !
et même, on devrait dire pseudo-aléatoire, car ce n'est pas un vrai hasard mais
un hasard simulé, par une fonction mathématique de distribution aléatoire.
Comme ici c'est maussade ....
En PJ un essai. Un mix formules et VBA pour faire simple. J'ai utilisé une table ne comportant que les filtre de plus de 7 bits à 1. juste pour accélérer les choses.
La feuille résultats donne le masque, la combinaison trouvée le plus fréquemment et le nombre de fois où elle fut trouvée.
Ce mix est déjà très, très lent avec une matrice de 1000 lignes. J'espère que vous êtes patient.
NB :
Je ne remonte que la première valeur qui est la plus fréquente.
Dans le cas où deux valeurs ou plus ont la même occurrence, je ne remonte que la première.
A vous de bricoler une macro pour faire sauter ce bug.
Est ce à dire que vous avez une matrice de N lignes avec 14 colonnes et que vous voulez récupérer que les lignes qui n'ont que 7 "1" ?
Si c'est ça c'est plus simple.
Euh...simple pour vous !
oui que les 1, comme dans mon exemple, sauf qu'il faut récupérer les 7 colonnes de 1 qui ont le maximum d'occurences parmi 14 colonnes. Dans mon exemple, c'est B D E H J K N
Donc en clair, si j'ai un masque qui vaut 00000001111111, cela revient à compter combien j'ai de fois ce nombre dans la matrice avec le masque.
Je compte par ex 00000001111111, 11000001111111, 11110001111111 ..... ?
Nouvel essai.
Je fais un masque de 7 à 14 bits, et je compte combien il y a de termes dans la matrice dont tous les bits choisis sont à 1.
En espérant avoir convergé.
J'ai essayé la macro avec mon exemple, il ne récupère pas mes 7*1 dans les colonnes que j'avais trouvées manuellement. (4 fois et non 7 fois ?)
Je joins l'essai.
Alors je n'ai rien compris au but que vous recherchez.
Pour moi, on ne s'occupe ici que des colonnes 2,4,5,8,10,11,14
et les trois lignes oranges ci dessous n'ont bien que des "1" sur les bonnes colonnes.