Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Macro-tri -cellules avec formules

djam28

XLDnaute Occasionnel
Bonjour à tous
Je suis bloqué sur un problème que je n'avais pas anticipé, étant novice en macro ou nul je dirais, je fais appel à votre savoir. Mon problème est le suivant:
J'ai un tableau avec 2 colonnes qui contiennent des formules, je voudrais le trier en gardant les memes colonnes ou sinon transférer le résultat sur d'autres colonnes. Le tri doit se faire par ordre croissant mais en commençant par 1 et non 0.
Ci -joint le fichier .
Merci +++
Bonne fin de journée
DE
 

Pièces jointes

  • Formule-macro-tri- excel.xlsx
    11 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Djam,
Votre colonne ID contenant des formules, si on trie les formules ne suivent pas sauf si on inclue les données de la colonne D.
Aussi je préfère dupliquer les deux colonnes.
Un essai en PJ avec :
VB:
Sub Tri()
    Application.ScreenUpdating = False
' Dernière ligne du tableau
    DL = Range("C65500").End(xlUp).Row
    Range("E8:F" & DL) = Range("B8:C" & DL).Value ' Copie matrice
' On remplace les DC=0 par DC=9999
    For L = 9 To DL
        If Cells(L, "F") = 0 Then Cells(L, "F") = 9999
    Next L
' On trie le tableau sur DC croissant puis ID croissant
    TriColC DL
' On remplace les DC=9999 par DC=0
    For L = 9 To DL
        If Cells(L, "F") = 9999 Then Cells(L, "F") = 0
    Next L
End Sub
Sub TriColC(DL)
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("F9:F" & DL) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("E9:E" & DL) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("E8:F" & DL)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
J'ai supposé que comme on commence à 1 alors 0 doit être considéré comme le plus grand indice.
 

Pièces jointes

  • Formule-macro-tri- excel.xlsm
    19 KB · Affichages: 4
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…