Besoin d'aide pour faire des tris particuliers SVP

porkybou

XLDnaute Nouveau
Bonjour,
Dans ma feuille Excel j'ai 2 colonnes
une intitulée ''parc'' et l'autre ''poids''. J'ai 54 numéros de parc différents et chaque parc a son poids.
Le total de ma colonne de poids est de 9746,4 kg.
Je veux faire 6 groupes de 9 parcs et je veux que chacun de mes groupes de 9 parcs pèse 1624,4 kg (9746,4/6 = 1624,4) à plus ou moins 1 kg d'écart entre chaque groupe.
Existe-t-il une façon de trier pour arriver à ce résultat, si ce n'est pas par triage, est-ce qu'une macro commande pourrait faire le travail sans que je soit obligé de faire ce tri manuellement.
J'ai besoin que mes numéros de parc suivent mes poids,
Merci à l'avance de votre aide.
 

porkybou

XLDnaute Nouveau
Re : Besoin d'aide pour faire des tris particuliers SVP

Oui je l'ai fait manuellement avec essais-erreurs pour arriver à ce résultat 2h plus tard.
Malheureusement je n'ai pas toujours 2h à consacrer à ce genre d'exercice, il me faut donc trouver une manière très rapide pour obtenir ce résultat.
Je vous joins donc mon fichier.
 

Pièces jointes

  • TriPoids.xls
    19.5 KB · Affichages: 69
  • TriPoids.xls
    19.5 KB · Affichages: 76
  • TriPoids.xls
    19.5 KB · Affichages: 74

KenDev

XLDnaute Impliqué
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonjour Porkybou, Dranreb,

Y-a t-il toujours 54 parcs ? S'agit-il toujours de faire 6 groupes ? Bref n'y-a-t-il que le poids susceptible de varier ?

Porkybou à dit:
J'ai besoin que mes numéros de parc suivent mes poids
Quel serait la logique de nommage ?

Une proposition dans le classeur joint mettant pour l'instant de côté le dernier point et avec les hypothèses qu'il s'agit toujours de faire 6 groupes de 9 parcs autour de la moyenne des poids. Les n° de groupes s'inscrivent en colonne C.
Si la répartition avec les limites demandées (1 kg de marge) n'est pas possible la macro n'aboutira jamais. La marge est définie à cette ligne :
Code:
Do Until g < p / n * 9 + 0.5 And g > p / n * 9 - 0.5
Si la macro semble tourner indéfiniment (si l'ordinateur est peu puissant) adapter ces deux lignes
Code:
If t2 > 2 * 10 ^ -5 Then GoTo Line1
en augmentant progressivement. (Sur mon netbook la macro est la plupart du temps quasi instantanée et semble aller jusqu'à une demi douzaine de secondes)

Cordalement

KD

VB:
Option Explicit
Sub Repartition()
Dim t1#, t2#, n&, i&, p#, j&, c&, g#, v&, x(), y()
    n = Cells(Rows.Count, 1).End(xlUp).Row - 1
    ReDim x(1 To n, 1 To 3): ReDim y(1 To 6, 1 To 10)
    For i = 2 To n + 1
        p = p + Cells(i, 2): x(i - 1, 1) = Cells(i, 1): x(i - 1, 2) = Cells(i, 2)
    Next i
Line1:
    t1 = Now: Randomize
    For i = 2 To n + 1
        x(i - 1, 3) = 0
    Next i
    For j = 1 To 6
        c = 0: g = 0
        Do
            v = Int(Rnd * n + 1)
            If x(v, 3) = 0 Then
                c = c + 1: x(v, 3) = j: g = g + x(v, 2)
            End If
            t2 = Now - t1
            If t2 > 2 * 10 ^ -5 Then GoTo Line1
        Loop Until c = 9
        Do Until g < p / n * 9 + 0.5 And g > p / n * 9 - 0.5
            v = Int(Rnd * 9 + 1): c = 0
            For i = 1 To n
                If x(i, 3) = j Then
                    c = c + 1
                    If c = v Then
                        x(i, 3) = 0: g = g - x(i, 2)
                        Do
                            v = Int(Rnd * n + 1)
                        Loop Until x(v, 3) = 0
                        x(v, 3) = j: g = g + x(v, 2)
                    End If
                End If
            Next i
            t2 = Now - t1
            If t2 > 2 * 10 ^ -5 Then GoTo Line1
        Loop
        c = 0
        For i = 1 To n
            If x(i, 3) = j Then
                c = c + 1: y(j, c) = x(i, 1): If c = 9 Then Exit For
            End If
        Next i
        y(j, 10) = g
    Next j
    For i = 1 To n
        Cells(i + 1, 3) = x(i, 3)
    Next i
End Sub
 

Pièces jointes

  • Copie de TriPoids.xls
    40.5 KB · Affichages: 60
Dernière édition:

porkybou

XLDnaute Nouveau
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonjour KenDev,

En réponse à tes questions OUI il y a toujours 54 parcs, OUI on doit toujours faire 6 groupes, OUI il n'y a que le poids qui peut varier.

Comme je l'ai mentionné lors de mon inscription je me considère comme une débutante avec excel donc quand vous me parler de "code" ou de "code BVA" je n'y comprend pas vraiment grand-chose.

Je joins de nouveau mon classeur intitulé "TriPoids" que j'ai remanié un peu pour tenter de vous montrer le résultat final que je veux obtenir.

Si malgré ce nouveau tableau, le tout n'est pas clair, n'hésitez pas à me demander.

Encore merci pour votre réponse et bonne journée.
 

Pièces jointes

  • TriPoids.xls
    40 KB · Affichages: 48
  • TriPoids.xls
    40 KB · Affichages: 49
  • TriPoids.xls
    40 KB · Affichages: 51
Dernière édition:

KenDev

XLDnaute Impliqué
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonjour Porkybou, Dranreb,

En réponse à tes questions OUI il y a toujours 54 parcs, OUI on doit toujours faire 6 groupes, OUI il n'y a que le poids qui peut varier.

Donc le fichier de mon post précédent devrait répondre à tes attentes ? Du moins ce sont les hypothèses que j'avais prises. L'as tu essayé ? Il faut lancer la macro 'Répartition". Cordialement

KD
 

Staple1600

XLDnaute Barbatruc
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonsoir KenDev

Ton code est maousse pour une personne qui se décrit ainsi ;)
Comme je l'ai mentionné lors de mon inscription je me considère comme une débutante avec excel donc quand vous me parler de "code" ou de "code BVA" je n'y comprend pas vraiment grand-chose.

Il faudrait que l'on ressorte nos panoplies de pédagogues du code, non ? ;)
 

KenDev

XLDnaute Impliqué
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonsoir Staple,

:rolleyes: Bon, bon, la macro est presque prête à l'emploi. :) Je peux toujours commenter le code et expliquer les deux points pouvant bloquer et comment y remédier si des questions suivent... Et puis moi même je n'y connais rien en code BVA ;)

Cordialement

KD
 

porkybou

XLDnaute Nouveau
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonsoir KenDev,

J'ai exécuté la macro ''répartition'' de ton fichier ''copie de TriPoids.xls'' et cette macro m'a effectivement fais un bon tri au niveau des poids mais elle ne m'indique pas quels poids relié à quel parc, que la macro a utilisé pour former chaque groupe.

C'est plus facile pour moi d'expliquer ce que je veux de façon verbale que de l'écrire.

Merci d'avoir pris le temps de me répondre. Bonne soirée
 

porkybou

XLDnaute Nouveau
Re : Besoin d'aide pour faire des tris particuliers SVP

Désolée Staple1600, je n'avais pas vu vos commentaires, qui sont tout à fait exacts, concernant ma connaissance restreinte de EXCEL.

Par ce petit mot, veuillez vous considéré comme salué.

Bonne soirée à vous.
 

KenDev

XLDnaute Impliqué
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonsoir Porkybou, Staple, Dranreb et tous les gens en pyjamas,

Une adaptation à ce que j'ai compris de ton 2ème fichier. Cordialement

KD
 

Pièces jointes

  • Copie de TriPoids2.xls
    48 KB · Affichages: 56

porkybou

XLDnaute Nouveau
Re : Besoin d'aide pour faire des tris particuliers SVP

Bonsoir à vous KenDev, Stapel1600, Dranreb

WOW, c'est génial ce que tu as fait dans ton fichier ''copie de TriPoids.xls''

C'est exactement ce que j'ai besoin d'obtenir comme résultat et le tout en un clin d'oeil au lieu de 2h.

Une dernière question SVP, dans quelle cellule ou à quel endroit dans le feuille as-tu mis ta macro pour que je puisse éventuellement corriger la macro si elle tourne à l'infini, j'ai son nom mais la macro en tant que telle, je ne l'ai pas trouvée.

Mille mercis pour le travail extraordinaire qui a été réalisé par des gens dévoués et sympathiques.:)
 
Dernière édition:

KenDev

XLDnaute Impliqué
Re : Besoin d'aide pour faire des tris particuliers SVP

Re,

Ce n'est pas dans Excel lui même mais dans l'éditeur Visual Basic. Faire ALT+F11, le code est dans le module 1. Si tu n'arrives pas direct dessus faire CTRL+R pour avoir l'explorateur de projet et cliquer sur les croix pour déplier le projet du classeur et arriver au module 1 (cliquer droit et choisir code). Cordialement

KD
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 227
Membres
103 159
dernier inscrit
FBallea