Les tris en fonction d'un ordre "Utilisateur" par macro...

D

Denis

Guest
Bonjour,
Une nouvelle question : (à laquelle, bien sur je n'ai pas "encore" trouvé de réponse)... Mais cela ne saurait tarder grace à vous.
Je voudrai trier une bdd en fonction d'un ordre de "produits" qui sont pour ma société dans un ordre qui n'est ni alpha ni numérique... et ce par macro...
J'ai pensé aux listes pers.
Mais voila : en fonction du poste utilisé, je constate que si, bien évidemment la liste pers n'est pas implantée, ...
Donc création de la liste pers par macro (merci au forum j'ai touvé comment faire : merci Thierry).
Mais, il y a toujours un mais
comment dans mon tri lui dire que c'est cette liste précise que je veux utiliser... L'enregistreur me donne un Selection.Sort... avec un OrderCustom:=7... AH que cela ne va donc pas (bien sur, ce serait trop beau) sur un autre poste sur lequel ce OrderCustom:=7 sera différent ou ne sera pas du tout. Et alors comment le trouver s'il existe ???
Dieu que la vie EXCEL est dure !!! mais tellement passionnante, non ???
 
@

@+Thierry

Guest
Salut Denis,

A mon avis tu te lances dans une usine à gaz, tu auras tout plein de difficultés à gérer ces listes persos sur différentes workstations... DE plus je ne sais pas trop encore comment excel numérote ces items... Si c'est chrono d'enregistrements (ce qui à l'air d'être le cas quand on regarde la liste manuellement)... Si un user a ces propres listes persos tu seras marron !!

Ok ta base doit être triée ni Alpha, ni Num... Mais tu dois bien avoir une clef non ...

Dans ce cas, ce serait plus "intelligent" de faire créer une colonne par VBA qui ferait une sorte de mixture VlookUp + Concatenate pour avoir un index de tri...

Enfin je vois çà de loin en aveugle...

Essaie de voir de ce cotéc là je pense...
Bon Week End
@+Thierry
 
A

andré

Guest
Salut Denis,

Si je comprends bien, il existe une liste type, qui n'est classée d'aucune façon logique.
Ce que tu veux, c'est trier une autre liste suivant l'ordre de la liste type.

A première vue j'essaierai de la procédure suivante :
Dans ta liste type tu crées une colonne supplémentaire, à droite de la liste, dans laquelle tu numérotes en continu les lignes de 1 à xyz.
Dans la liste à trier tu crées également une colonne supplémentaire, n'importe où, et par un RECHERCHEV, tu récupères le numéro attribué dans la liste type.
Puis tu tries la liste à trier sur base de cette nouvelle colonne.

Tout cela peut se faire en enregistrant tout simplement une macro.

André.
 
R

Rolilandon

Guest
Bonjour Denis

Le n'ai pas eu trop de temps mais voila un bout de code

Sub Odonner()
'
' La macro trie une BDD en fonction d'un liste
' La liste est sur une feuille ordretri
' Les deux feuilles sont dans le même claseur. A adapter si différents
'
Dim Cellules As Variant, Reference As Variant
Dim Valeur As String, ContenuDeplace As String
Dim NbCellules As Integer, Position As Integer, Compteur As Integer
Const FeuilReference As String = "OrdreTri", FeuilATrier As String = "feuil1"
'
Sheets(FeuilATrier).Activate
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
NbCellules = Selection.Rows.Count
Sheets(FeuilReference).Activate
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Position = 0
For Each Reference In Selection
Valeur = Reference.Value
Sheets(FeuilATrier).Activate
For Compteur = Position To NbCellules
If Range("A2").Offset(Compteur, 0) = Valeur Then
If Compteur = Position Then
Position = Position + 1
Else
ContenuDeplace = Range("A2").Offset(Position, 0)
Range("A2").Offset(Position, 0) = Range("A2").Offset(Compteur, 0).Value
Range("A2").Offset(Compteur, 0) = ContenuDeplace
Position = Position + 1
End If
End If
Next Compteur
Sheets(FeuilReference).Activate
Next Reference
End Sub
 
D

Denis

Guest
Merci à tous, les solutions que vous me proposez (testées par mes soins attentifs) fonctionnent.
Une question à Rolilandon (ou à quiconque d'ailleurs) : quel est l'avantage (et ou la différence) entre Const et Set ???
Merci encore
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista