Fractionner des données pour les trier en VBA

gaetan661

XLDnaute Nouveau
Bonjour a tous. Je dispose d'un tableau de mission a exécuter. Celles ci sont triées par ordre décroissant en fonction de mon taux de prise. J'aimerasi au possible saisir un pas (par exemple 10) et que excel me mette les 10 premières en priorité 1, les 10 autres en prio 2 etc.

Je n'est pas fini ^^. Une fois ces priorités mise en place, j'aimerais trier par ordre croissant les prio 1, les prio 2 etc

Cordialement.

Je vous met un exemple en fichier joint sa sera plus facile.
 

Pièces jointes

  • Excel dwl.xlsx
    22.5 KB · Affichages: 40

Robert

XLDnaute Barbatruc
Repose en paix
Re : Fractionner des données pour les trier en VBA

Bonjour Gaetan, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :
Code:
Sub Macro1()
Dim O As Object 'déclare la variable O (Objet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim T As Variant 'déclare la variable T (Taux)
Dim I As Long 'déclare la variable I (Incrément)
Dim N As Long 'déclare la variable N (Nombre)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O = Sheets("Feuil1") 'définit la'onglet O
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O
T = Application.InputBox("Choississez le Taux", "TAUX", Type:=2) 'définit le taux T
If T = False Or T = "" Then Exit Sub 'si bouton "Annuler" ou si boîte d'entrée non renseignée, sort de la procédure
N = 1 'initialise le nombre N
For I = 2 To DL Step CInt(T) 'boucle des lihne 2 à DL par pas de T
    O.Cells(I, 3).Resize(CInt(T), 1).Value = N 'donne la valeur N à la première cellule redimentionnée (T ligne, 1 colonne)
    'tri (je ne commente pas car j'ai utiliser l'enregistreur de macro et je ne comprends rien à cette nouvelle méthode de tri...)
    O.Sort.SortFields.Clear
    O.Sort.SortFields.Add Key:=O.Range(O.Cells(I, 2), O.Cells(I + (CInt(T) - 1), 2)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With O.Sort
        .SetRange O.Range(O.Cells(I, 1), O.Cells(I + (CInt(T) - 1), 7))
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    N = N + 1 'incrémente N
Next I 'prochaine ligne de la boucle
O.Cells(DL + 1, 3).Resize(T, 1).Clear 'efface les éventuelles données en fin de colonne 3 (=C)
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
 

Pièces jointes

  • Gaetan_v01.xlsm
    37.4 KB · Affichages: 32

gaetan661

XLDnaute Nouveau
Re : Fractionner des données pour les trier en VBA

Un grand merci. C'est ce que je voulais sauf que plus mon taux de prise est élevé, plus ma priorité doit etre proche de 1 donc élevée. Votre tri s'effectue dans le mauvais sens.
La prio 1 correspond au plus petit taux de prise et je n'arrive pas a le modifier.... car je vois que vous avez effectuer qu'un seul tri alors qu'il en faudrait 2 ? ( 1 pour le taux de prise et 1 pour les num mission ?

Je vous envoi mon vrai fichier si vs avez le temps de m'y consacrer quelques minute de plus.
 

Pièces jointes

  • Ordo.xlsm
    58 KB · Affichages: 29
  • Ordo.xlsm
    58 KB · Affichages: 30
  • Ordo.xlsm
    58 KB · Affichages: 35

Robert

XLDnaute Barbatruc
Repose en paix
Re : Fractionner des données pour les trier en VBA

Bonsoir Gaetan, bonsoir le forum,

Je suis désolé Gaetan mais je ne comprends rien à tes explications. J'ai beau les lire et les relire en regardant ton fichiers, je n'arrive pas à comprendre. Sois indulgent avec moi je n'ai qu'un neurone...
Je te propose de nous envoyer un nouveau fichier avec en Feuil2 les données avant le traitement par la macro et en Feuil3, le résultat que tu désires obtenir après traitement par la macro... En mettant en évidence par des couleurs les changements occasionnés.
 

gaetan661

XLDnaute Nouveau
Re : Fractionner des données pour les trier en VBA

Excuse moi c'est pas évident d'expliquer a distance.

C'est exactement ce que tu m'a fait sauf que c'est dans l'ordre décroissant. Mais je t'ai tout réexpliqué en détail sur le fichier en feuil3 j'espère que c'est compréhensible...

Et encore merci.
 

Pièces jointes

  • Ordo.xlsm
    67.9 KB · Affichages: 26
  • Ordo.xlsm
    67.9 KB · Affichages: 27
  • Ordo.xlsm
    67.9 KB · Affichages: 28

Discussions similaires

Réponses
2
Affichages
625

Statistiques des forums

Discussions
312 104
Messages
2 085 332
Membres
102 863
dernier inscrit
Selemani