Verifier si le classement est correct

Bonjour à tous,

J'ai 2 colonnes AG = place et AH = Perf
Je tri les 2 colonnes par Perf
J'aimerai savoir si les chiffres, dans la colonne place, se suivent. Si ce n'est pas le cas, colorer les cellules qui ne se suivent pas.

J'ai fais la formule, en AI :
=IF(RC[-2]<R[1]C[-2],TRUE,FALSE), qui marche, mais je voudrais automatiser cela, en evitant de tirer la cellule (code vba ?).
Je vous remercie d'avance.
Bonne journée

1 réponse

  1. Contributeur
    Bonjour,

    Tu mets une mise en forme conditionnelle avec ta formule.
    1. Bonjour, Merci pour ta réponse. La formule est pour le moment du depannage. J'aimerai automatiser cela par du vba. D'autre part, la mise en forme conditionnelle ne me servira pas si je passe en vba, non ? ;-)
    2. Contributeur
      Bonjour,
      la mise en forme conditionnelle ne me servira pas si je passe en vba, non ?
      C'est une erreur de penser ainsi.
      Il faut d'abord utiliser les fonctionnalités d'excel natives qui sont bien plus efficaces et ensuite l'on ne passe à VBA que pour des traitements itératifs non natifs.
    3. @gbinformeBonjour gbinforme,
      Finalement, j'ai peux être trouvé la solution. Ce n'est pas terrible, largement ameliorable, mais ca fonctionne :

      Sub testClassement()

      'tri par perfs
      Sheets("test").Select
      Range("H7").EntireColumn.SpecialCells(xlCellTypeConstants).Select
      Selection.Offset(2, 0).Resize(Selection.Rows.Count - 2).Select
      Selection.Resize(Selection.Rows.Count + 0, _
      Selection.Columns.Count + 42).Select
      Selection.Sort Key1:=Range("AH7"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
      DataOption1:=xlSortNormal
      '
      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      'verifie si place 1 est < a place 2...etc...
      Range("AG7").EntireColumn.SpecialCells(xlCellTypeConstants).Select
      Selection.Offset(2, 0).Resize(Selection.Rows.Count - 2).Select
      Set SourceRange = Selection
      Set fillRange = Selection.Offset(0, 2)
      Range("AI7").Select
      ActiveCell.FormulaR1C1 = "=IF(RC[-2]<R[1]C[-2],TRUE,FALSE)"
      Selection.AutoFill Destination:=fillRange
      'Met en rouge les cellules en "faux"
      Dim CurCell As Range
      For Each CurCell In fillRange
      If CurCell.Value = "Faux" Then CurCell.Interior.ColorIndex = 3
      Next

      End Sub
    4. Contributeur
      Bonsoir,
      Si tu as trouvé chaussure à ton pied tout va bien.