[Calcul d'un nombre de rouleau de tapisserie] [Boucle-Itération] [VBA]

Bonjour tout le monde,

Je vais vous expliquer plus en détail le problème afin de vous éviter des pertes de temps inutiles.

LE BUT

  • Je cherche à quantifier de manière très précise pour éviter les gâchis.
  • C'est la raison pour laquelle je n'ai pas souhaité travailler au m².

OBJECTIF

  • Je cherche à calculer le nombre de rouleau de tapisserie nécessaire pour couvrir une surface spécifique à l'aide d'une fonction personnalisé au format VBA.
    • Ici, il s'agira d'un trapèze (voir schéma ci-dessous)
      • schema
      • On s'attardera uniquement sur la partie numéro 1 (en rouge)

LA CONDITION PRINCIPALE

  • La ré-utilisation obligatoire du restant de tapisserie précédemment découpé si et uniquement si la longueur restante permet de couvrir la hauteur entière du let suivant. etc...

LE PROBLÈME RENCONTRÉ

  • Les résultats donnés par la fonction sont erronées. La fonction ne semble pas reprendre les restes de tapisserie en suivant ma condition ci-dessus.

LE CODE

Function QRT(Longueur_de_Tapisserie As Double, Coefficient_directeur As Double, Largeur_Rouleau As Double, Nombre_de_Largeur As Single) As Single
    Dim k As Double, Nb_Rouleau As Single, r As Single

    Nb_Rouleau = 0
    k = Longueur_de_Tapisserie

    For r = 0 To Nombre_de_Largeur

        Do While k >= 0
            k = k - (Coefficient_directeur * Largeur_Rouleau * (r + 1) * 1.1)
        Loop

        If k < 0 Then
            Nb_Rouleau = Nb_Rouleau + 1
            k = Longueur_de_Tapisserie
        End If
    Next r

    QRT = Nb_Rouleau
End Function

LES VARIABLES

"Coefficient directeur" = Il s'agit d'une coeff. dir. de l'hypothénuse du triangle.

"Nombre de largeur" = il s'agit du nombre de largeur de rouleau comprise entre le début et la fin de la partie 1. Ce chiffre à bien évidemment été arrondi à l'inférieure car la partie suivante est une constante.

Voilà voilà.

Je vous remercie par avance et j'ai hâte de voir vos propositions. Le problème est tout bête je suppose.

bonjour Marimé,

vous voulez une sorte d'optimalisation de manière de minimaliser le nombre de rouleaux ? Seulement un idée = l'utilisation de solveur. Voir PJ

8rouleaux.xlsb (20.78 Ko)

si nécessaire/possible, on peut aussi tourner les pièces avec 180° pour éviter les gâchis

Bonjour, les calculs concerne du papier peint sans raccord ? car des fois on est obligé d'aller chercher le lé suivant 50cm plus haut

Bonjour BsAlv,

  • J'ai pu zieuter le excel mais il semble être adapté uniquement au surface rectangulaire, je me trompe ?
  • "vous voulez une sorte d'optimalisation de manière de minimaliser le nombre de rouleaux ?" En quelque sorte oui
  • En revanche votre idée du solveur est une bonne idée. Peut-elle être adaptée au format VBA ?

Bonjour Xmenpl,

  • Tout à fait, j'ai oublié de le mentionner, pardon.
  • Avez-vous des solutions et/ou vu des erreurs dans le code VBA qui induirait la non reprise du restant de tapisserie par hasard ?

Je vous remercie infiniment pour votre temps, et vos conseils !

@Marimé, rectangulaire, oui, je supposais que le triangle en dessus (1) est de la perte. Ou ... , vous tournez le rouleau 180° pour utiliser ce triangle dans une autre pièce ?

J'ai l'impression qu'excel-solveur ne veut pas comprendre ce truc, je sais le faire plus vite à main ... .

re,

sans le problème de Xmenpl du raccord

6rouleaux.xlsb (25.96 Ko)

Bonjour tout le monde,
Une proposition avec une UF pour la saisie des données.

12rouleaux.xlsm (26.48 Ko)

Attention : vous avez choisi un plan (attaquer un nouveau rouleau lorsqu'il n'est plus assez long pour couvrir le lé suivant) qui est tout sauf optimisé (= gros gaspillage). Contrairement à ce que vous avez l'air de penser lorsque vous avez écrit "Le problème est tout bête, je suppose", vous vous trompez lourdement. C'est un problème de recherche opérationnelle (RO) qui correspond à un modèle d'optimisation plutôt complexe. Si j'en retrouve le nom, je reviendrai avec l'algo qui va bien.

Bonjour BsAlv,

  • "rectangulaire, oui, je supposais que le triangle en dessus (1) est de la perte. Ou ... , vous tournez le rouleau 180° pour utiliser ce triangle dans une autre pièce ?"
    • Erreur de ma part, il s'agissait de la surface à tapisser justement.
      • J'aurais du lors de l'ouverture de mon topic ne mettre qu'une image d'un triangle pour éviter cela.
  • Le fichier semble fonctionner correctement et donner des résultats cohérent par rapport aux dimensions données.
    • Merci beaucoup pour votre aide BsAlv

Bonjour Optimix,

  • J'ai tout de suite compris mon erreur en vous lisant. Effectivement le reste de tapisserie peut très bien être réutilisé plus tard.
  • Merci beaucoup pour votre userform qui s'adapte parfaitement au document de BsAlv. Ainsi que pour vos conseils et précisions sur le problème rencontré.
  • "Si j'en retrouve le nom, je reviendrai avec l'algo qui va bien"
    • Avec plaisir !
  • "Expression du besoin insuffisante = réponse insuffisante."
    • En effet, je pensais qu'il s'agissait de quelque chose de tout bête. Je vous prie de bien vouloir m'excuser pour la gêne occasionnée.

Un gros merci à tous !

Rechercher des sujets similaires à "calcul nombre rouleau tapisserie boucle iteration vba"