Faire un Tri sur une colonne Excel selon la pourcentage VBA

Bonjour,

Je débute encore avec Excel, j'ai réussi à faire une bonne partie de ma macro qui me permet de faire un tri conditionnel sur une colonne de données et colorie après les cellule en fonction de ce tri, par contre le résultat que j'ai n'ai pas aussi satisfaisante pour moi, je explique un peu plus, le tri devra être décroissant par contre quand j'applique ma macro j'ai tous les 0 qui s'affiche en avant et après j'ai mon tri décroissant, je ne sais pas pourquoi ça me fait ça, en plus je veux colorier mes cellules en dégradé c-à-d si la pourcentage égale à 0, j'ai un dégradé jaune, si c'est 100% j'ai un dégradé vert, si c'est plus de 100% j'ai un dégradé rouge

Je vous met mon code pour le calcul de somme que j'ai utilisé

Sub Pourcentage_Budget()

Dim Valeur As Integer

Dim plage As Range

Set plage = ActiveSheet.Range("A1:J" & Range("A" & Rows.Count).End(xlUp).Row)

plage.Sort Key1:=Range("J2"), Order1:=xlDescending, Header:=xlGuess, _

OrderCustom:=1, Orientation:=xlTopToBottom

Valeur = Sheets("SIG-Etat-Budgets").Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To Valeur

If Sheets("SIG-Etat-Budgets").Range("J" & i).Value > 1.00000000001 Then

Sheets("SIG-Etat-Budgets").Range("J" & i).Interior.ColorIndex = 3

ElseIf Sheets("SIG-Etat-Budgets").Range("J" & i).Value = 0 Then

Sheets("SIG-Etat-Budgets").Range("J" & i).Interior.ColorIndex = 36

ElseIf Sheets("SIG-Etat-Budgets").Range("J" & i).Value < 0.999999999999 And Sheets("SIG-Etat-Budgets").Range("J" & i).Value <> 0 Then

Sheets("SIG-Etat-Budgets").Range("J" & i).Interior.ColorIndex = 44

Else: Sheets("SIG-Etat-Budgets").Range("J" & i).Value = 1

Sheets("SIG-Etat-Budgets").Range("J" & i).Interior.ColorIndex = 4

End If

Next i

End Sub

Bonjour,

Un exemple dans le fichier joint.

Cdlt.

16rouritta.xlsm (59.31 Ko)
Sub Pourcentage_Budget()
Dim ws As Worksheet
Dim lastRow As Long, I As Long
Dim rng As Range
    Application.ScreenUpdating = False
    Set ws = Worksheets("SIG-Etat-Budgets")
    With ws
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng = .Cells(1).Resize(lastRow, 10)
        rng.Interior.ColorIndex = xlColorIndexNone
        rng.Sort Key1:=.Cells(2, 10), Order1:=xlDescending, Header:=xlGuess, _
                 OrderCustom:=1, Orientation:=xlTopToBottom
        For I = 2 To lastRow
            Select Case True
                Case .Cells(I, 10).Value = 0: .Cells(I, 10).Interior.ColorIndex = 36
                Case .Cells(I, 10).Value = 1: .Cells(I, 10).Interior.ColorIndex = 4
                Case .Cells(I, 10).Value > 1: .Cells(I, 10).Interior.ColorIndex = 3
                Case .Cells(I, 10).Value < 1: .Cells(I, 10).Interior.ColorIndex = 44
            End Select
        Next I
    End With
End Sub

Bonjour,

Merci pour la solution, mais ça me fait toujours la même chose

Bonjour,

Tes 0 sont-ils des 0 numériques ? Car s'ils sont inhibés par une valeur "" qui est une valeur texte, dans un tri décroissant, le texte sera classé avant les valeurs numériques...

Et que représente exactement ton OrderCustom:=1 ?

Cordialement.

Salut Jean-Eric !

Re,

Bonjour MFerrand,

@ Rourrita, merci de joindre un fichier à ta demande.

Cdlt.

@MFerrand Exactement mes valeurs étais du texte c'est bon j'ai pu résoudre ce soucis, il me reste à Faire le dégradé en Fonction de valeur de pourcentage, ci joint mon Fichier avec ce que j'ai pu Faire

Merci d'avance

Rechercher des sujets similaires à "tri colonne pourcentage vba"