luke3300
XLDnaute Impliqué
Bonjour le forum,
Cela fait plusieurs jours que je cale sur un code que j'utilise pour générer un tri de données suivi d'un classement dans 3 colonnes différentes suivant l'importance du score dans ces données.
Je pensais que tout se faisait correctement mais en regardant de près, je m'aperçois que lorsque j'ai un total de 240 conducteurs dans ma feuille de départ "MR", il en reste +/-40 au total dans la feuille "Chauffeurs" qui doit comporter les résultats triés et répartis. Et il en manque dans les 3 colonnes.
Je ne comprends pas pourquoi ... quelqu'un pourrait m'aiguiller SVP?
J'ai ajouté une feuille dans le fichier Test avec le résultat recherché pour être plus clair.
Pour préciser, les données de la feuille "MR" sont toujours dans les cellules de B199 à C600.
Voici le code utilisé:
Merci d'avance pour votre aide et belle journée.
Cela fait plusieurs jours que je cale sur un code que j'utilise pour générer un tri de données suivi d'un classement dans 3 colonnes différentes suivant l'importance du score dans ces données.
Je pensais que tout se faisait correctement mais en regardant de près, je m'aperçois que lorsque j'ai un total de 240 conducteurs dans ma feuille de départ "MR", il en reste +/-40 au total dans la feuille "Chauffeurs" qui doit comporter les résultats triés et répartis. Et il en manque dans les 3 colonnes.
Je ne comprends pas pourquoi ... quelqu'un pourrait m'aiguiller SVP?
J'ai ajouté une feuille dans le fichier Test avec le résultat recherché pour être plus clair.
Pour préciser, les données de la feuille "MR" sont toujours dans les cellules de B199 à C600.
Voici le code utilisé:
VB:
Sub Tri()
Application.ScreenUpdating = False
DerLig = Application.WorksheetFunction.CountA(Sheets("MR").Range("B199:B600"))
tablo = Sheets("MR").Range("B199:C" & DerLig)
DerLigTablo = UBound(tablo)
Sheets("Chauffeurs").Range("A5:H1000").ClearContents
I40 = 5: I30 = 5: I20 = 5
For i = 2 To DerLigTablo
DPS = tablo(i, 2)
If DPS > 40 Then
Sheets("Chauffeurs").Range("B" & I40) = DPS
Sheets("Chauffeurs").Range("A" & I40) = tablo(i, 1)
I40 = I40 + 1
ElseIf DPS <= 40 And DPS > 20 Then
Sheets("Chauffeurs").Range("E" & I30) = DPS
Sheets("Chauffeurs").Range("D" & I30) = tablo(i, 1)
I30 = I30 + 1
ElseIf DPS <= 20 Then
Sheets("Chauffeurs").Range("H" & I20) = DPS
Sheets("Chauffeurs").Range("G" & I20) = tablo(i, 1)
I20 = I20 + 1
End If
Next i
'PlusGrand
[A1].Select
End Sub
Sub PlusGrand()
Application.ScreenUpdating = False
Range("A4:B600").Select
ActiveWorkbook.Worksheets("Chauffeurs").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Chauffeurs").Sort.SortFields.Add Key:=Range("B5:B300") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Chauffeurs").Sort
.SetRange Range("A4:B600")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("D4:E600").Select
ActiveWorkbook.Worksheets("Chauffeurs").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Chauffeurs").Sort.SortFields.Add Key:=Range("E5:E300") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Chauffeurs").Sort
.SetRange Range("D4:E600")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("G4:H600").Select
ActiveWorkbook.Worksheets("Chauffeurs").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Chauffeurs").Sort.SortFields.Add Key:=Range("H5:H300") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Chauffeurs").Sort
.SetRange Range("G4:H600")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Merci d'avance pour votre aide et belle journée.