OVH Cloud OVH Cloud

Macro tri excel

6 réponses
Avatar
ben48
Bonjour,

je cherche à classer un tableau de type (mais je suis perdu)

nom 1 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 2 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 3 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 4 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 5 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 6 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
...
nom650 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6

les lignes sont classées par ordre chronologique de choix et le but est que chacun ait son "meilleur" voeu sous limite de places pour chaque choix.

L'ordre chronologique prévaut sur l'ordre des choix.

Je ne sais pas si je suis très clair mais impossible d'expliquer différemment.

Merci d'avance

6 réponses

Avatar
DanielCo
Bonjour,
Il devrait y avoir un tableau avec le nombre de places disponibles pour
chaque choix ?
Daniell


Bonjour,

je cherche à classer un tableau de type (mais je suis perdu)

nom 1 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 2 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 3 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 4 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 5 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 6 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
..
nom650 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6

les lignes sont classées par ordre chronologique de choix et le but est que
chacun ait son "meilleur" voeu sous limite de places pour chaque choix.

L'ordre chronologique prévaut sur l'ordre des choix.

Je ne sais pas si je suis très clair mais impossible d'expliquer
différemment.

Merci d'avance
Avatar
ben48
Le mardi 17 Septembre 2013 à 19:17 par ben48 :
Bonjour,

je cherche à classer un tableau de type (mais je suis perdu)

nom 1 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 2 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 3 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 4 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 5 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 6 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
...
nom650 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6

les lignes sont classées par ordre chronologique de choix et le but est
que chacun ait son "meilleur" voeu sous limite de places pour chaque
choix.

L'ordre chronologique prévaut sur l'ordre des choix.

Je ne sais pas si je suis très clair mais impossible d'expliquer
différemment.

Merci d'avance


En effet, le fichier excel comporte un onglet avec le nombre de places disponibles pour chaque choix. Malgré cela, je ne sais pas du tout comment faire.
Avatar
DanielCo
Le mardi 17 Septembre 2013 à 19:17 par ben48 :
Bonjour,

je cherche à classer un tableau de type (mais je suis perdu)

nom 1 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 2 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 3 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 4 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 5 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 6 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
...
nom650 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6

les lignes sont classées par ordre chronologique de choix et le but est
que chacun ait son "meilleur" voeu sous limite de places pour chaque
choix.

L'ordre chronologique prévaut sur l'ordre des choix.

Je ne sais pas si je suis très clair mais impossible d'expliquer
différemment.

Merci d'avance


En effet, le fichier excel comporte un onglet avec le nombre de places
disponibles pour chaque choix. Malgré cela, je ne sais pas du tout comment
faire.



Est-ce que tu peux charger un classeur exemple sur cjoint.com et poster
ensuite ici le lien généré ?

Daniel
Avatar
ben48
Le mardi 17 Septembre 2013 à 19:17 par ben48 :
Bonjour,

je cherche à classer un tableau de type (mais je suis perdu)

nom 1 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 2 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 3 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 4 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 5 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 6 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
...
nom650 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6

les lignes sont classées par ordre chronologique de choix et le but est
que chacun ait son "meilleur" voeu sous limite de places pour chaque
choix.

L'ordre chronologique prévaut sur l'ordre des choix.

Je ne sais pas si je suis très clair mais impossible d'expliquer
différemment.

Merci d'avance


Ceci est une version très simplifié du fichier mais cela donne un ordre d'idées.

http://cjoint.com/data3/3IsoYo4NEPG.htm
Avatar
ben48
Le mardi 17 Septembre 2013 à 19:17 par ben48 :
Bonjour,

je cherche à classer un tableau de type (mais je suis perdu)

nom 1 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 2 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 3 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 4 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 5 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
nom 6 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6
...
nom650 voeu 1 voeu 2 voeu 3 voeu 4 voeu 5 voeu 6

les lignes sont classées par ordre chronologique de choix et le but est
que chacun ait son "meilleur" voeu sous limite de places pour chaque
choix.

L'ordre chronologique prévaut sur l'ordre des choix.

Je ne sais pas si je suis très clair mais impossible d'expliquer
différemment.

Merci d'avance



Voeu 1 Voeu 2 Voeu 3 Voeu 4 Voeu 5 Voeu 6
Paul Choix 1 Choix 9 Choix 7 Choix 3 Choix 4 Choix 5
Richard Choix 1 Choix 2 Choix 9 Choix 4 Choix 3 Choix 8
Marc Choix 2 Choix 8 Choix 3 Choix 4 Choix 9 Choix 7
Julien Choix 2 Choix 4 Choix 3 Choix 7 Choix 9 Choix 8
Michel Choix 5 Choix 3 Choix 5 Choix 8 Choix 2 Choix 9
Julie Choix 1 Choix 8 Choix 9 Choix 7 Choix 6 choix 4
Quentin Choix 1 Choix 4 Choix 8 Choix 5 Choix 7 Choix 2
Marie Choix 9 Choix 4 Choix 8 Choix 1 Choix 6 Choix 5
Axel Choix 7 Choix 8 Choix 4 Choix 9 Choix 5 Choix 1


nb places max :

Choix 1 Choix 2 Choix 3 Choix 4 Choix 5 Choix 6 Choix 7 Choix 8 Choix 9
1 2 2 1 2 1 1 1 1
Avatar
DanielCo
Les résultats sont en colonne 9. Regarde si ça te convient :

Sub test3()
Dim C As Range, Tabl1, Tabl2, Ligne As Long
Tabl1 = Application.Transpose(Application.Transpose([B13:J13]))
Tabl2 = Application.Transpose(Application.Transpose([B14:J14]))
For Each C In [B3:B11]
For i = 1 To 6
Ligne = Application.Match(C.Offset(, i), Tabl1, 0)
If Tabl2(Ligne) > 0 Then
Tabl2(Ligne) = Tabl2(Ligne) - 1
Cells(C.Row, 9) = Tabl1(Ligne)
Exit For
End If
Next i
Next C
End Sub

Daniel