Bonjour
besoin d'un coup de main
point attribution 18 17 16 15 14 13 12 ...2 1
premier serie 14 12=18 7 9=15 10=2=8 1
deuxieme serie 11 10=3=16 14=7=9 12=15 18
Attibution des points avec la 1er et 2eme serie
exemple le 14 aura 18points (premiere position) dans la premier serie + 16 points (3eme position) dans la 2eme serie.
14 = 18+16 14=34
12 = 17+14 12=31
18 = 17+13 18=30
7 = 16+16 7=32
9 = 15+16 9=31
15 = 15+14 15=29
10 = 14+17 10=31
2 = 14+0 2=14
8 = 14+0 8=14
1 = 13+0 1=13
11 = 18+0 11=18
3 = 17+0 3=17
16=17+0 16=17
Qui donne
*****************Resultat voulu => 14 7 12=9=10 18 15 11 3=16 2=8 1 (si 12-9-10 ordre différent pas grave car attribué points, sinon rajouter un CRIT sur une 4eme ou 5eme COL...)
J'ai une Tab3D (la 3d pour determiner la position du tri 12=18, 9=15,10=2=3 etc..)
je récupere les billes dans ma Tab3D
TABDB(1 to 20, 1 to 3)
Dans la feuille
1er tri colB dans la feuille ou dans TABDB
ColA ColB
14 19
12 17
18 17
7 15
9 14
15 14
10 12
2 12
8 12
1 11
2eme tri colC dans la feuille ou dans TABDB
ColA ColC
11 1
10 2
3 2
16 2
14 3
7 3
9 3
12 3.5
15 3.5
18 4
Code un peut difficile mais intéréssant pour les codeurs de TAB.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function TriSerie(Tablo,Optional ResulTab, Optional LigTri) 'Pour faire le Tablo de travail Dim I as integer Dim Tab3D() Redim Tab3D(1 to 18, 1 to 2 , 1 to 2) 'ou les récupere dans la fauille Tab3D=Sheets("Feuille").Cells(1, 1).Resize(10, 3).value... Call tri(Tab3D, 1, 2) 'tri xlAscending... ' Quick sort....ou n'importe For I = 1 To UBound(Tab3D) Tab3D(I, 1, 1) = TABDB(I, 1) Tab3D(I, 1, 2) = TABDB(I, 2) Next I Call tri(Tab3D, 2, 1) 'tri xlAscending... ' Quick sort....ou n'importe For I = 1 To UBound(Tab3D) 'tri xlDescending... Tab3D(I, 2, 1) = TABDB(I, 1) Tab3D(I, 2, 2) = TABDB(I, 3) Next I 'Donc je me retrouve avec mon tablo de travail 'La apres je cale.... ResulTab=Tab3D End function
peut-être plus facile avec du DO ?
Merci pour votre aide
Partager