Automatisation de tri

  • Initiateur de la discussion Cortex
  • Date de début
C

Cortex

Guest
Salut a tous!
Voila j'aimerai savoir si il est possible de rendre le tri (ordre croissant) d'une liste automatique afin de pouvoir insérer une nouvelle ligne sans avoir a retrier le tout à chaque fois?
 
O

omicron

Guest
Bonsoir Cortex,

Tu trouveras en pièce jointe une petit exemple qui pourra t'aider à résoudre ton problème.

Voici le code :

=====================================================
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("Tableau"), Range("E:E"), Target) Is Nothing Then _
Range("Tableau").Sort Key1:=Intersect(Range("E:E"), Target), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
=====================================================

Explications :

Chaque fois que l'on modifie une zone du tableau à trier (Plage nommée "Tableau"), et que cette zone fait partie de la colonne servant de clé de tri (ici la colonne "E"), le tableau est trié à nouveau.

L'ajout ou le retrait d'une ligne de tableau est considéré comme une modification et donc déclenche le tri (même si en fait la ligne ajoutée est d'abord placée en fin de tableau car non valorisée, puis à sa place dès que la cellule appartenant à la colonne utilisée comme clé de tri a été modifiée)


En te souhaitant bon courage pou la suite.


Omicron.
 

Pièces jointes

  • TriAuto.zip
    9.9 KB · Affichages: 26
  • TriAuto.zip
    9.9 KB · Affichages: 22
  • TriAuto.zip
    9.9 KB · Affichages: 20
G

Gérard DEZAMIS

Guest
Bonsoir Cortex, Bonsoir Omicron

DataOption1:=xlSortNormal déclenche une erreur
en le "deboguant à la sauvage" = Mise en REM avec '
Cela fonctionne.
Origine de la panne ?
De plus,
Je pensais que le changement d'une cellule contenant une formule simple somme, moyenne... de plusieurs données declencherait le tri mais non !
C'est uniquement la validation par la key Enter qui déclenche cette action.
Dommage.....
N'aurais-tu pas en réserve une solution pour mon problème ? est-il possible dans le code de remplacer Cette colonne (E:E) en rouge dans ton tableau par plusieurs autres colonnes (qui modifient E:E)
J'ai l'impression de ne pas être très clair.
On est bientôt demain !
Merci d'avance
@+
GD
 
G

Gérard DEZAMIS

Guest
Re Bonsoir
1000 excuses pour ma flemme : je n'avais même pas fait l'effort d'essayer
j'ai remplacé :
If Not Intersect(Range("Tableau"), Range("E:E"), Target) Is Nothing Then par :
If Not Intersect(Range("Tableau"), Range("Tableau"), Target) Is Nothing Then et cela fonctionne très bien.
Merci

Reste le mystère du DataOption1 : il attendra bien demain.
@+
Bonne nuit
GD
 
G

Gérard DEZAMIS

Guest
Bonsoir Omicron

J'ai encore tout faux !
A chaque fois que je rentre une donnée dans la colonne B le tri s'effectue en fonction des valeurs de B, idem pour C ou D !
J'ai donc repris la "Sort Key1:=Intersect(Range("E:E"), Target), " du début mais Oups ! Rien ne va plus !
Dans 5 minutes je prends la position horizontale alors bonne matinée et merci d'avance de tes conseils éclairés.
Pas trop forte la lumière SVP j'ai le sommeil léger...
@+
Cordialement
GD
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
408
Réponses
9
Affichages
219

Statistiques des forums

Discussions
312 500
Messages
2 089 005
Membres
104 003
dernier inscrit
adyady__