Trouver un minimum d'échantillons

Bonjour à tous,

Je me heurte à un soucis actuellement dans le cadre de mes études.

Le mini projet sur lequel je travaille consiste, pour partie, à poser des filets métalliques architecturaux dans des structures à ossatures métallique. Le bâtiment repose sur des poteaux entre lesquels on doit poser les filets.

L'écartement des poteaux varie et les mesures entre axe sont assez dispersées.

J'ai 5 bâtiments à traiter, dont chacun repose sur 26 poteaux.

On dispose d'une marge de manoeuvre pour la dimension de ces filets :

  • au maximum le filet peut mesurer L-160 mm
  • au minimum le filet peut mesurer L-320 mm
Avec L l'entraxe entre deux poteaux dans la travée concernée.

Le but de la manoeuvre est de calculer le nombre minimal de filets différents pour un problème d'optimisation.

J'ai tout d'abord fait le relevé de ces entraxes et les ai mis dans une colonne. J'ai ensuite fait deux colonnes mini et maxi en retranchant les cotes ci-dessus.

Mon idée première était de faire travailler le solveur dans lequel j'ai mis pour cellule cible le nombre de largeur de filet différentes qui m'est donné par la formule suivante :

=SOMME((FREQUENCE(A:A;A:A)>0)*1)

Ensuite j'ai mis mes conditions : chaque largeur de filet doit être inférieure au maxi et supérieur au mini

J'ai demandé la valeur min de la cellule cible mais le solveur me donne comme résultat autant de filet qu'il existe de travée...

Après je me suis mis à réfléchir sur une boucle VBA mais malheureusement je n'ai pas le niveau pour résoudre mon problème.

Si vous pouviez m'aiguiller dans ma démarche je vous en serais très reconnaissant.

A bientôt.

Bonsoir,

peux-tu nous mettre ton fichier ?

Bonjour,

Voilà le fichier en question.

J'ai mis en couleur les plages sur lesquelles je travaille dans l'imédiat.

Merci.

13releves-filets.zip (18.83 Ko)

Bonjour,

une proposition via une macro, sur base de ce que j'ai compris.

je compte le nombre d'intervalles min-max qui ne se recouvrent pas.

19releves-filets.zip (20.64 Ko)

Oui c'est tout à fait ça. Mais j'ai du mal à comprendre le premier if... Que se passe-t-il dans la ligne range... ?

En tout cas merci pour votre aide!

bonjour,

code commenté brièvement.

Sub solve()
'1 )suppose colonne L triée en ordre croissant
'2) intervalle espace compris entre min et max
' effacer colonne L
Range("L15:L67").ClearContents
' on prend les maxima un à un, i=pointeur ligne des maxima
For i = 15 To 67
' pour chaque maximum, on prend les minima un à un, j =pointeur ligne des minima
 For j = i + 1 To 67
 ' si le maximum de la ligne i est < que le minimum de la ligne j, les intervalles ne se recouvrent plus
  If Cells(i, "K") < Cells(j, "J") Then
   'on met max de la ligne i comme dimension retenue pour toutes les lignes où les intervalles se recouvrent
   Range(Cells(i, "L"), Cells(j - 1, "L")) = Cells(i, "K")
   'on détermine la ligne du maximum suivant à prendre en compte
   i = j - 1
   Exit For
  End If
 Next j
Next i
' traitement de la dernière ligne max, si pas encore traitée
If Cells(67, "L") = "" Then Cells(67, "L") = Cells(67, "J")
End Sub

Bonjour,

Vraiment très utile, merci beaucoup.

Rechercher des sujets similaires à "trouver minimum echantillons"