• Initiateur de la discussion Initiateur de la discussion a10
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

a10

XLDnaute Impliqué
bonjour,

1/ j'ai un tableau:
ordre ref qte
1 25 100000
2 22 10000
3 10 1000
4 989 1500
5 1000 900
6 500 3500
7 5 100


puis je tri par qte en ordre décroissant la ref et la qte.
2/ sauf que je dois laisser les références suivantes que je décide arbitrairement demettre une dans l'ordre 4 et la suivante dans l'ordre 6:
(pour cetexemple il n'y a que 2 cas mais je peux arbitrairement prioriser ces ref)
ordre ref qte
4 989 1500
6 500 3500


je cherche une formule ou une façon de trier par quantité mon tableau du pargraphe 1 tout en laissant la ref 989 en 4 position et la ref 500 dans laposition 6.

avez vous une solution simple.


a+
 
Re : tri

Bonjour a10,

Avec une macro ce n'est guère difficile :

1. Effectuer un tri classique sur le tableau.

2. Rechercher la référence désirée (989).

3. Couper sa ligne et l'insérer sur la ligne voulue.

4. Répéter les opérations 2. et 3. avec les autres références (500 et autres).

On pourra utiliser 2 Array pour lister les références désirées et les n° des lignes.

A+
 
Re : tri

Bonjour,
Une macro pour trier=Ok
mais une macro pour trouver mes références= je ne sais pas faire
couper la ligne

mais pour qu'elle se colle sur la bonne ligne = je na sais pas faire
mais je vois pas comment je peux coller les autre szréférences sans effacer les references desireé
a+
 
Re : tri

Bonjour a10,

En attente de votre fichier voyez cette macro dans le fichier joint (Alt+F11) :

Code:
Sub Tri(col As Byte, ordre)
Dim plage As Range, ref, L, flag As Boolean, i As Byte
Dim lig As Variant, decal As Byte
Set plage = Range("A1:C" & [A65536].End(xlUp).Row) 'adapter
ref = Array(989, 500) 'adapter
L = Array(4, 6) 'adapter
Application.ScreenUpdating = False
plage.Sort plage.Columns(col), ordre, Header:=xlYes
If col = 1 Then Exit Sub 'facultatif
Do
  flag = False
  For i = 0 To UBound(ref)
    lig = Application.Match(ref(i), plage.Columns(2), 0)
    If IsNumeric(lig) Then 'sécurité
      If lig <> L(i) + 1 Then '+ 1 car titres
        flag = True
        plage.Rows(lig).Cut
        decal = IIf(lig < L(i) + 1, 1, 0)
        plage.Rows(L(i) + 1 + decal).Insert xlDown
      End If
    End If
  Next
Loop While flag
Application.CutCopyMode = False
End Sub
Nota 1 : la macro est paramétrée, elle est appelée par les macros des boutons en Feuil1.

Nota 2 : sur l'exemple le bouton Tri Ordre n'est pas vraiment nécessaire car la colonne Qte est déjà triée.

Nota 3 : c'est un joli problème, pas facile, j'ai mis un Like au post #1.

EDITION : ajouté la ligne If col = 1 Then Exit Sub 'facultatif

A+
 

Pièces jointes

Dernière édition:
Re : tri

Re,

Si les positions correspondent bien aux N° d'ordre, on peut déterminer automatiquement le tableau L :

Code:
Sub Tri(col As Byte, ordre)
Dim plage As Range, ref, L(), i As Byte, lig As Variant
Dim flag As Boolean, decal As Byte
Set plage = Range("A1:C" & [A65536].End(xlUp).Row) 'adapter
ref = Array(989, 500) 'adapter
ReDim L(UBound(ref))
For i = 0 To UBound(ref)
  lig = Application.Match(ref(i), plage.Columns(2), 0)
  If IsNumeric(lig) Then L(i) = plage.Cells(lig, 1)
Next
Application.ScreenUpdating = False
plage.Sort plage.Columns(col), ordre, Header:=xlYes
If col = 1 Then Exit Sub 'facultatif
Do
  flag = False
  For i = 0 To UBound(ref)
    lig = Application.Match(ref(i), plage.Columns(2), 0)
    If IsNumeric(lig) Then 'sécurité
      If lig <> L(i) + 1 Then '+ 1 car titres
        flag = True
        plage.Rows(lig).Cut
        decal = IIf(lig < L(i) + 1, 1, 0)
        plage.Rows(L(i) + 1 + decal).Insert xlDown
      End If
    End If
  Next
Loop While flag
Application.CutCopyMode = False
End Sub
Fichier (2).

A+
 

Pièces jointes

Re : tri

bonjour,

a partir du post1:
le point1: c'est un tableau les données
le point 2: c'est les références en jaune que je positionne arbitrairerement

et je cherche à coller rapidement les 400 /500 ref par ordre de qté dans les espaces vides

a+
 
Re : tri

Re,

Pas top pour comprendre 😕

1) Mettez en Feuil2 le résultat que vous voulez obtenir.

2) A quoi sert le tableau A2:B25 (TITRES SIMILAIRES) ?

Edit : pour 2) je crois comprendre qu'il s'agit de la liste des références à prendre en compte (les cellules jaune).

A+
 
Dernière édition:
Re : tri

Re,

Bon a priori avec ce nouveau fichier (3) vous pourrez faire ce que vous voulez.

La macro adaptée :

Code:
Sub Tri(col As Byte, ordre)
Dim plage As Range, ref, L(), i As Byte, lig As Variant
Dim flag As Boolean, decal As Byte
Set plage = Range("G1:N" & [G65536].End(xlUp).Row) 'adapter
ref = Application.Transpose(Range("A3", [A65536].End(xlUp)))
ReDim L(1 To UBound(ref))
For i = 1 To UBound(ref)
  lig = Application.Match(ref(i), plage.Columns(4), 0)
  If IsNumeric(lig) Then L(i) = plage.Cells(lig, 2)
Next
Application.ScreenUpdating = False
plage.Sort plage.Columns(col), ordre, Header:=xlYes
If col = 1 Then Exit Sub 'RAZ
Do
  flag = False
  For i = 1 To UBound(ref)
    lig = Application.Match(ref(i), plage.Columns(4), 0)
    If IsNumeric(lig) Then 'sécurité
      If lig <> L(i) + 1 Then '+ 1 car titres
        flag = True
        plage.Rows(lig).Cut
        decal = IIf(lig < L(i) + 1, 1, 0)
        plage.Rows(L(i) + 1 + decal).Insert xlDown
      End If
    End If
  Next
Loop While flag
Application.CutCopyMode = False
End Sub
Nota : il y avait des formules en colonnes G et H, bien entendu je les ai supprimées.

A+
 

Pièces jointes

Re : tri

Bonjour a10,

La macro Tri dans Module1 n'est pas visible avec Alt+F8 car elle est paramétrée.

On ne peut la lancer que par macro en lui envoyant les valeurs de ses 2 paramètres.

C'est ce que font les macros des boutons ActiveX en Feuil1.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
886
Réponses
10
Affichages
1 K
D
Réponses
4
Affichages
1 K
G
  • Question Question
Réponses
1
Affichages
802
Grouchet
G
S
Réponses
6
Affichages
1 K
R
Réponses
3
Affichages
4 K
R
  • Suggestion Suggestion
Recherche & référence DicoCountOrder
Réponses
0
Affichages
2 K
M
  • Résolu(e)
Réponses
5
Affichages
1 K
D
  • Résolu(e)
Réponses
13
Affichages
3 K
debenexcel
D
Retour