Formule pour incrémenter

Bonjour à Tous,

Dans mon tableur en PJ, je souhaiterais un peu d'aide. Dans ma dernière colonne Index, l'idée est que j'ai une incrémentation au fur et à mesure que ma colonne "Opérationnelle" se remplie. En effet, quand je mets un "Oui", je souhaite qu'il s'incrémente à partir du dernier oui qui existe. Si Paris devient opérationnelle avec un Oui, alors je veux qu'il prenne donc la valeur 4 par exemple. Si Lyon devient opérationnelle avec un oui, alors il prendra la valeur 5...sinon les case reste vide dans Index. Je ne veux pas que cela reparte à 1 systématiquement. Comment puis je faire, car mon tableau original comporte plus de500 lignes et ce sont des lignes que je ne vais pas traitées toute en même temps. Mais je veux que l'ordre apparaisse quand elles sont traitées. D'avance, merci pour le coup de main.

10tbaleur.xlsx (8.23 Ko)

Bonjour à tous,

Une proposition :

8tbaleur.xlsx (9.07 Ko)

Merci, mais effectivement c'est cela qui me pose problème, car je souhaite quand je change par exemple le "Non" en "Oui" dans la case B2, que le chiffre passe à 3 et non 1, car dans l'ordre c'est le 3éme oui dans le tableau et non le premier. C'est là où je ne m'en sors pas.

Bonjour,

Dans ce cas vous avez nécessairement besoin de passer par VBA, car les fonctions ne se "rappellent" pas de leurs valeurs actuelles, autrement cela créé des boucles infinies.

Ci-joint une proposition, et ci-après le code en question, qui doit se trouver dans le code de la feuille où se trouve votre tableau.

4tbaleur.xlsm (15.06 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim KeyCells As Range

  ' The variable KeyCells contains the cells that will
  ' cause an alert when they are changed.
  Set KeyCells = Range(Range("B2"), Range("B2").End(xlDown))

  If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    Select Case Target.Value2
    Case "Oui"
      'on passe de non à oui
      Target.Offset(0, 1).Value2 = [MAX(C:C)] + 1
    Case Else
      ' on passe de oui à non, il faut réindexer
      Target.Offset(0, 1).Value2 = vbNullString
      Dim cell As Range
      For Each cell In KeyCells.Offset(0, 1)
        If cell.Value2 <> vbNullString Then
          cell.Value2 = WorksheetFunction.Max(1, cell.Value2 - 1)
        End If
      Next cell
    End Select
  End If
End Sub
Rechercher des sujets similaires à "formule incrementer"