Pour trier automatiqement

bonjour

je voudrais trier mon tableau par la date modifier

c'est a dire quand je rajoute une ligne

exemple " épinal " date " florent " couleur "

il faudrait que toutes la lignes soit trier des que j'ai modifier la date et tout ça automatiquement

cordialement

jean yves

10pour-trier.zip (22.41 Ko)

Bonjour,

Pour un tri automatique sur la date, si tu saisis ou modifies la date après avoir rempli les 3 autres cases de la ligne, ça ira.

Mais si tu saisis la date comme deuxième élément, il faudra courir dans le tri pour saisir le reste.

À tester si ça convient.

houa c'est super

c'est ça que je veut

maintenant je regarde comment ta fait ça !

jean yves

Bonjour,

Comment j'ai fait ?

En ajoutant cette macro :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DelLig As Integer  ' déclarer la variable

If Not Intersect([B:B], Target) Is Nothing And Target.Count = 1 Then  ' appliquer seulement sur  la colonne B
   DerLig = Range("B" & Rows.Count).End(xlUp).Row  ' trouver la dernière ligne de la colonne B
   With ActiveWorkbook.Worksheets("prénoms").Sort   ' le trie
      .SetRange Range("A2:D" & DerLig)
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
    End With
End If
End Sub

j'ai essayer de l'ajouter dans le fichier mais moi ça fonctionne pas

Bonjour,

La macro : Worksheet_Change = quand il y a un changement dans la feuille.

As-tu bien ajouté cette macro dans la feuille concernée ?

Il ne faut pas la placer dans un module.

Gelinotte

à ok c'est pour ça je l'ai mit dans un module

je la met ou ?

Bonjour,

Dans VBE, double clique sur la feuille où tu veux que le tri s'applique.

Selon ton exemple, c'est la feuille "Prenoms".

Gelinotte

désolé mais je vois pas ou !

Bonjour,

Je me suis trompé de fichier, désolé.

Quand on est sur la feuille, frappe ALT-F11 pour ouvrir VBE. Puis un double clique sur Feuil1(prénoms).

Voir image dans fichier joint.

Gelinotte

ça marche pas !


quand tu ma répondu la première fois avec le fichier qui etait bien

ta macro est dans un module

j'ai essayé mais marche pas non plus!

Bonjour,

Ce que je comprends : les fichiers exemples, que j'ai déposés sur ce forum, fonctionnent.

Mais tu n'es pas capable d'intégré le code à ton fichier de travail.

C'est bien cela ?

Gelitotte

oui c'est bien ça !

Bonjour,

J'ai pris le temps de tester sous Excel 2007 et ça fonctionne.

Dans ton fichier de travail, le nom de la feuille est bien "prénoms" ? Sinon, il faut faire le changement dans le code.

Les dates sont bien dans la colonne B ?

Les cellules de la colonne B, sont bien des formats date ?

Gelinotte

pourtant j'essai de mettre le code dans le même fichier

je doit pas le faire comme il faut

quand je clique sur alt f11 moi j'ai ça !

capture
4pour-trier.zip (23.01 Ko)

Bonjour,

Dans ton dernier fichier exemple, je ne vois pas ce code, il faut l'ajouter :

C'est lui qui effectue le tri ....

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DelLig As Integer  ' déclarer la variable

    If Not Intersect([B:B], Target) Is Nothing And Target.Count = 1 Then  ' appliquer seulement sur  la colonne B
      DerLig = Range("B" & Rows.Count).End(xlUp).Row  ' trouver la dernière ligne de la colonne B
      With ActiveWorkbook.Worksheets("prénoms").Sort   ' le trie
         .SetRange Range("A2:D" & DerLig)
          .Header = xlYes
          .MatchCase = False
          .Orientation = xlTopToBottom
          .SortMethod = xlPinYin
          .Apply
        End With
    End If
    End Sub

Gelinotte

ok je te met et g ajouter le code

ça marche pas

6pour-trier.zip (23.98 Ko)

Bonjour,

Change la macro pour celle-ci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DelLig As Integer  ' déclarer la variable

If Not Intersect([B:B], Target) Is Nothing And Target.Count = 1 Then  ' appliquer seulement sur  la colonne B
derlig = Range("B" & Rows.Count).End(xlUp).Row  ' trouver la dernière ligne de la colonne B
Range("A2:D" & derlig).Select
ActiveWorkbook.Worksheets("prénoms").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("prénoms").Sort.SortFields.Add Key:=Range("B3:B" & derlig) _
   , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("prénoms").Sort   ' le trie
   .SetRange Range("A2:D" & derlig)
   .Header = xlYes
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
End With
Range("A" & derlig).Select

End If
End Sub

Gelinotte

non tjrs pas

essai de le mettre toi pour voir

je l'ai mit ici

sans titre
4pour-trier.zip (21.48 Ko)

Bonjour,

Il faut remplacer la macro, pas l'ajouter. Sinon, on se retrouve avec 2 macros portant le même nom = erreur.

Teste le fichier joint.

Gelinotte

6pour-trier2.zip (18.08 Ko)
Rechercher des sujets similaires à "trier automatiqement"