jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 2006
-
18 mars 2005 à 14:43
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 2006
-
19 mars 2005 à 15:15
Bonjour,
Mon problème est le suivant, je dois établir un classement relatif à un Cross, pour le classement général pas de problème, la fonction exel marche très bien.Par contre ,comme il y a plusieurs cathégories de coureurs et il faut aussi établir le classement dans leurs cathégoeries et c'est la que j'ai un problème car la fonction Filtres automatique d'exel ne permet pas ce genre de chose.
Si quelqu'un avait une idée, elle serait la bienvenue.
A B
1 EM
2 DE
3 EM
4 SM
Il faudrait donc que dans A1 s'inscrive 1, en A2 1, en A3 2, en A4 1 et ainsi de suite .
D'avance merci (Si mon explication n'est pas assez claire faite le moi savoir )
galopin01
Messages postés133Date d'inscriptionlundi 4 octobre 2004StatutMembreDernière intervention14 octobre 20111 19 mars 2005 à 07:52
Bonjour,
Le code suivant fait exactement le contraire :
Tu mets les catégories en colonne A et il te les classe en colonne B
Sub ClassementParCat()
'libre adaption d'une routine de zon par galopin
Dim Plage As Range, T
Set Plage = Range([A1], [A65536].End(xlUp))
T = ExtD(Plage.Value, 1)
If IsArray(T) Then
T = InverseTab(T, 1)
For i = 1 To UBound(T)
TLookUp (T(i, 1))
Next
Else
MsgBox "Error1"
End If
End Sub
Function ExtD(T, ColT As Byte)
'libre adaption d'une routine de zon
Dim i&, j&, k&, Tablo As New Collection, Tmp()
For i = LBound(T, 1) To UBound(T, 1)
On Error Resume Next
Tablo.Add T(i, ColT), CStr(T(i, ColT))
If Err = 0 Then
ReDim Preserve Tmp(1 To UBound(T, 2), 1 To j + 1)
For k = 1 To UBound(Tmp)
Tmp(k, j + 1) = T(i, k)
Next k
j = j + 1
End If
Next i
ExtD = IIf(j > 0, Tmp, "")
End Function
Function InvTab(T, Optional Base As Byte = 0)
'libre adaption d'une routine de zon
Dim Temp(), i&, j&
ReDim Temp(Base To UBound(T, 2), Base To UBound(T))
For i = LBound(T, 2) To UBound(T, 2)
For j = LBound(T) To UBound(T)
Temp(i, j) = T(j, i)
Next j
Next i
InvTab = Temp
End Function
Sub TLookUp(Z)
'libre adaption d'une routine de zon
Dim T As Range, t1$, n%, tR%
n = 1If Range("A1").Value Z Then n n + 1
Set T = Range("A1:A" & Range("A65000").End(xlUp).Row).Find(Z)
If Not T Is Nothing Then
t1 = T.Address
Do
tR = T.Row
Range("B" & tR).Value = n
n = n + 1
Set T = Range("A1:A" & Range("A65000").End(xlUp).Row).FindNext(T)
Loop While Not T Is Nothing And T.Address <> t1
End If
Range("B1").Value = 1
End Sub
A+
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 18 mars 2005 à 16:00
Merci NH
J'ai essayé, mais cela ne marche pas ,je lance la macro, le sablier apparaît et plus rien ne se passe , je dois faire Echap. pour arrêter.
Je vais essayer de la modifier, si de ton côté tu as une idée de la raison pour laquelle cela ne marche pas , elle sera de nouveau la bienvene.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 18 mars 2005 à 23:52
Salut,
Effectivement, ce n'est pas très clair. En tous cas pour moi.
Tu expliques ce que tu veux obtenir mais pas à partir de quoi.
Comment est agencé ton tableau d'origine ? (ou tes tableaux)
Loup Gris
Vous n’avez pas trouvé la réponse que vous recherchez ?