Feuille classement

Résolu
Bonjour,

J'ai un tableau de classement de résultats sportifs qui est alimenté par différents autres tableaux.
Quand je rentre des résultats je dois me rendre sur la feuille classement et appuyer sur
un bouton Activx (macro)pour faire le classement.
Je voudrais savoir s'il existe un code qui fasse le classement dés que des données nouvelles sont entrées
dans le tableau,sans être obligé de venir appuyer sur ce bouton classement.
Merci pour votre aide
Cordialement

Configuration: Windows / Firefox 67.0

10 réponses

  1. Contributeur
    Bonjour,

    avec l’événement Worksheet_SelectionChange de ta feuille, comme ceci

    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then 'adapter la colonne de saisie
    'le code de classement
    End If
    End Sub
    


    2
    1. Bonjour cs_Le Pivert, nos réponses se sont croisée mais je presque "fier" d'avoir donné la même que toi !
      0
  2. Là fabien tu es un dieu
    exactement ce que je voulais.
    Excuse moi pour l'insistance ,mais je ne suis pas trop doué avec le vba
    Merci encore
    Bonne continuation
    0
    1. lol pas tant...
      n'oublie pas de passer ton sujet en résolu
      bon jeu
      0
    2. Contributeur
      Nicos,
      Merci d'avoir dédaigné ma proposition :-((

      Avant de penser VBA, penser Excel
      0
  3. Ok ça fonctionne à peu près je suis obligé de cliquer plusieurs fois sur une cellule
    pour que le tri se fasse.
    Est-ce normal?
    0
    1. ce n'est pas colonne E que ça se joue mais dans les colonnes Points..
      remplace ça
      If Not Intersect(Target, Range("E:E")) Is Nothing Then

      par ça et dis moi si ça te va mieux
      If Not Intersect(Target, Range("B:D")) Is Nothing Then
      0
  4. le fichier avec de modifs de données et le tri
    ne se fait pas en colonne E

    https://www.cjoint.com/c/IFgoyxruh4k
    0
    1. tu n'as pas remplacé
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      par
      Private Sub Worksheet_Change(ByVal Target As Range)
      .
      0
  5. j'ai bien mis ton code dans l’onglet de la feuil1
    mais quand je rentre un chiffre dans une cellule de la plage A2:E11
    le classement ne se fait pas
    0
    1. chez moi ça tourne très bien..
      tu as bien remplacé
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      par
      Private Sub Worksheet_Change(ByVal Target As Range)
      ?
      tes macro sont bien activées?
      il n'y a pas de ligne vide dans le champ E2:E11?
      0
  6. Je ne sais pas si ce que je demande est réalisable
    Dés qu'une cellule de la plage E2:E11 se modifie
    toute la plage A2/E11 se classe du +petit au +grand
    0
    1. c'est ce que fait le code que je t'ai posté à 15h19 post#6
      0
  7. Contributeur
    Bonjour,

    Un exemple de classement à la volée par formules pour des nombres (à adapter pour des chronos)
    https://mon-partage.fr/f/2jOuyjR0/
    1
    1. intéressant merci michel
      0
  8. comme ça, ça devrait aller :
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E:E")) Is Nothing Then 'adapter la colonne de saisie
        Range("A1:E1").Select
        Selection.AutoFilter
        ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort.SortFields.Add2 Key:= _
            Range("E1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Selection.AutoFilter
    End If
    End Sub


    1
    1. Bonjour et merci à tous les 2
      j'ai fais un essai mais pas concluant ,je dois me m’emmêler les pinceaux quelque part
      un exemple
      https://www.cjoint.com/c/IFgnewIfg2k
      Amicalement
      0
      1. Bonjour,
        il suffit de changer ton code de place pour qu'il soit affecté à l'événement change de ta feuile plutot qu'au clic de ton bouton :
        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then ' range à ajuster à ton cas
                'ton code ici
            End If
        
        End Sub


        1