Nombre de colonnes minimum necessaires

  • Initiateur de la discussion Initiateur de la discussion @ntoine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

@ntoine

XLDnaute Nouveau
Bonjour à tous

Voici mon petit problème.

Un tableau de 28 colonnes sur 28 lignes avec les caractéristiques suivantes:

Chaque colonne est remplie aléatoirement sur X/(TAILLE) lignes de la valeur 1.
(On peu varier ce nombre de valeurs (TAILLE))
Le tableau en sa totalité remplis tel qu'aucune ligne ne soit oublié

Je cherche une méthode pour trouver la combinaison de colonnes minimum nécessaire pour obtenir
un résultat de 28 lignes entièrement couverte de valeurs 1.

Par Exemple:

La premiere colonne contient les valeurs 1 en lignes 1 / 6 / 10 / 13 / 18
J'ai donc 5 valeurs sur les 28 possibles d'une colonne pleine de valeurs 1 , il reste donc 23 lignes non couvertes.

je passe à la seconde colonne qui contient les valeurs 1 au lignes 2 / 6 / 15 / 20 / 28
1 seule ligne commune avec la colonne 1 soit la ligne 6, cela rajoute 4 nouvelles lignes de valeur 1 , il reste 19 lignes non couvertes
pour atteindre 28 .
La colonne 2 n'étant pas obligatoirement celle ayant le moins de lignes communes avec la premiere colonne, on controle la colonne suivante .

Avec un remplissage de 5 valeur par colonne et 28 lignes par colonnes, cela donnerait en théorie
28/5 soit une combinaison de 6 colonnes "nécessaires au minimum" pour obtenir un résultat de 28 lignes de valeur 1 couvertes.

Vous remerciant pour toute astuce.
 

Pièces jointes

Dernière édition:
Re : Nombre de colonnes minimum necessaires

Bonjour @ntoine et bienvenue sur XLD,

Tu nous indiques :

...Je cherche une méthode pour trouver le nombre de colonnes minimum nécessaire pour obtenir
une colonne de 28 lignes entièrement couverte...

Qu'appelle-tu une colonne de 28 lignes entièrement couverte ?

Couverte de quoi ? de 1 ? ou d'autre chose ?

A te (re)lire avec suffisamment de précisions.

@+
 
Re : Nombre de colonnes minimum necessaires

Bonsoir à tous,

En examinant rapidement le PB (et si j'ai bien compris), je pense qu'il est probable que seul Taille = 28 assure un résultat de 28 pour la cellule B33.

Pour illustrer, j'ai commis un fichier avec deux macros.

1) macro: Sub chercheOK28()
Cette macro pour une taille donnée recherche au bout de combien de calcul on obtient un résultat de 28 pour la cellule B33.
(intéressant pour des petite valeurs de Taille)

2) macro: Sub chercheKO28()
Cette macro pour une taille donnée va tenter de faire 50000 (modifiable) essais. Si un essai donne un résultat différent de 28 pour la cellule B33, cela signifie que Taille n'assure pas un remplissage complet à coup sûr.
(intéressant pour des grandes valeurs de Taille, ex: 7,8,9) -> pour 9 et 10, on trouve encore des résultats différents de 28. Pour 11 aussi, mais c'est de plus en plus rare.

Attention ! les macros peuvent éventuellement laisser le mode 'Calcul manuel' activé. A la fermeture du classeur, le mode automatique devrait être rétabli.

le code dans le module de Feuil1:
VB:
 Sub chercheOK28()
Dim i As Long, N As Long, Cpt As Long
Application.ScreenUpdating = False

N = -1
[a33] = 0
N = Application.InputBox("Borne haute de la boucle ?", Type:=2, Default:=10000)
If N <= 0 Then Exit Sub
Application.Calculation = xlCalculationManual
For i = 1 To N
  If i Mod 1000 = 0 Then
    Application.ScreenUpdating = True
    [a33] = i
    Application.ScreenUpdating = False
  End If
  Application.Calculate
  If [b33] = 28 Then Exit For
Next i
If [b33] = 28 Then
  MsgBox "28 atteint au " & Format(i, "# ##0") & " eme essai"
  [a33] = i
Else
  MsgBox "28 pas atteint"
  [a33] = "*****"
End If
End Sub

Sub chercheKO28()
Dim i As Long, N As Long, Cpt As Long
Application.ScreenUpdating = False

N = -1
[a33] = 0
N = Application.InputBox("Borne haute de la boucle ?", Type:=2, Default:=50000)
If N <= 0 Then Exit Sub
Application.Calculation = xlCalculationManual
For i = 1 To N
  If i Mod 1000 = 0 Then
    Application.ScreenUpdating = True
    [a33] = i
    Application.ScreenUpdating = False
  End If
  Application.Calculate
  If [b33] <> 28 Then
    MsgBox "Pas de concordance au premier calcul à la " & Format(i, "# ##0") & " eme tentative"
    [a33] = i
    Exit For
  End If
Next i
If [b33] = 28 Then
  MsgBox "Toutes les concordances ont eu lieu au 1er essai sur " & _
    N & " tentatives"
End If
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
1 K
  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
217
Réponses
30
Affichages
449
Retour