Formule avec plusieurs "SI"

Résolu
Bonjour,

Je souhaite réaliser une formule avec plusieurs constante :

On a un jour J correspondant à une date et je souhaite :
si J < 30/06/2012 alors résultat "A" sinon
si 01/07/2012 < J < 31/12/2012 alors "B" sinon
si J >= 01/01/2013 alors "C"

Merci pour votre aide car là je patauge

4 réponses

  1. Bonjour,

    Avec une macro, c'est possible :

    Sub test()
    Dim rng As Range, cell As Range

    Set rng = Range("J1:J" & Range("J" & Rows.Count).End(xlUp).Row) 'On peut ajuster la range en fonction des cases où se trouve les valeurs

    Application.ScreenUpdating = False

    For Each cell In rng.Cells
    If CDate("01/07/2012") < cell.Value < CDate("31/12/2012") Then
    cell.Offset(, -1).Value = "B"
    End If
    If cell.Value >= CDate("01/01/2013") Then
    cell.Offset(, -1).Value = "C"
    End If
    If cell.Value < CDate("30/06/2012") Then
    cell.Offset(, -1).Value = "A"
    End If
    If cell.Value = "" Then
    cell.Offset(, -1).Value = ""
    End If
    Next

    Application.ScreenUpdating = True

    End Sub


    J = Colonne contenant les dates
    I = Colonne contenant les résultats A, B ou C.

    Je reste à votre disposition pour toute autre question.

    Cordialement, Romain.
    0
    1. Contributeur
      Tu y es presque pourtant: quand tu écris du pseudo-code - comme tu le fais d'ailleurs très bien ici - la formule est à deux pas.

      Excel ne connait pas "est compris entre", par contre il connait "est plus grand que ET est plus petit que". Dans ton cas:

      Pseudo-code #2:

      SI jour EST INFERIEUR OU EGAL A date-pivot1 ALORS A
      SINON SI jour EST PLUS GRAND QUE date-pivot1 ET QUE jour EST PLUS PETIT OU EGAL A date-pivot2 ALORS B
      SINON SI jour EST PLUS GRAND QUE date-pivot2 ALORS C

      En Excel:
      - avec jour dans la cellulle A1, date-pivot1 dans la cellule A2 et date-pivot2 dans la cellule A3
      - B1 contient le résultat A, B2 le résultat B et B3 le résultat C

      =SI(A1<=A2;B1;SI(ET(A1>A2;A1<=A3);B2;B3))

      0
      1. Dans une macro, le format : Date < valeur < Date fonctionne.
        0
    2. oulà cela devoient compliqué, on a pas la possibilité de faire cela avec une fomrule avec des SI.

      j'avais fait de mon côté mais cela ne marche pas :

      date se trouve en B17 :

      =SI(DATEVAL(B17)<"30/6/2012";"A";SI(ET(DATEVAL(B17)>"01/07/2012";DATEVAL(B17)<="31/12/2012");"B";SI(DATEVAL(B17)>="01/01/2013";"C")))
      0
      1. Contributeur
        Bonjour,

        Pourquoi vous utilisez dateval ? A mon avis votre problème vient de la car cette fonction transforme votre date en texte. Et là la comparaison ne fonctionne plus.

        Il faut garder les dates, et mettres les dates de fin juin et fin décembre dans des cellules.

        Voici un exemple: https://www.cjoint.com/?0ByqwRfoQ9m
        0
    3. ok je vais essayer avec ça, merci bcp pour votre aide.
      0