Formule miracle ?

Bonjour,
Je cherche depuis un bon moment deja, jai fouiller google de fond en comble mais je ne trouve pas. J'explique mon probleme. Je fais une feuille de personnage (style jeux video) je voudrai qu'a chaque niveau cela coute plus que le niveau precedent. Exemple.

Exp recu Niveau
A1________A3
Jaimerai que lorsque a1 =20 que a3 =1
Jaimerai que lorsque a1 =60 que a3 =2
Jaimerai que lorsque a1 = 120 que a3=3
Jaimerai que lorsque a1 =180 que a4=4

Cest un calcul que chaque niveau prend 20 exp recu de plus que le precedent. Il y a til un moyen qu'en inscrivant l'exp recu le niveau soit calculer automatiquement ?

5 réponses

  1. Modérateur
    Bonjour,

    Si tu veux quelque chose de "dynamique" sans avoir à saisir tous tes SI ..... tu peux éventuellement passer par du VBA et une fonction personnalisée.
    Par exemple :
    Function getValByInterv(cell As Range, Optional nbIntervMax As Long = 300) As Long
    
    Dim interv As Long
    Dim interv_prec As Long
    Dim increm As Long
    
    increm = 0
    interv = 0
    interv_prec = 0
    
    For i = 1 To nbIntervMax
     increm = increm + 20
     interv = interv + increm
     If cell.Value > interv_prec And cell.Value <= interv Then
       getValByInterv = i
     End If
     interv_prec = interv
    Next
    
    End Function
    


    NB: Avec un nbIntervMax à 300 tu peux aller jusqu'à 900000 .. si tu as besoin de plus tu augmente la valeur de nbIntervMax (soit dans la fonction ... soit en lui passant le second argument lors de son appel...

    et pour l'utiliser il suffit de faire (dans une cellule...) :
    =getValByInterv(A13)
    

    ou
    =getValByInterv(A13,300)
    


    1
    1. Contributeur
      Bonjour
      =SI(A1=20;1;SI(A1=60;2;SI(A1=120;3;SI(A1=180;4;""))))
      je ne sais pas si c'est ce que vous cherchez, mais ça répond à la question au pied de la lettre
      Ca peut être nuancé sur les valeurs de A1
      =SI(A1<=20;1;SI(A1<=60;2;SI(A1<=120;3;SI(A1<=180;4;""))))
      crdlmnt
      0
      1. Contributeur
        bonjour

        =EQUIV(A1;{0;20;60;120;180};1)-1
        0
        1. Contributeur
          Bonjour,

          et 21 ou 59 c'est 1 ou 2 ?
          En attendant une formule plus générale :
          =ENT(A1/60)+1

          eric
          0
          1. Modérateur
            Sauf que son intervall n'est pas systématiquement de 60 ... pour chaque niveau...
            0
          2. Contributeur
            Sauf que on ne sait pas.
            Moi je vois +1 à 60, 120 et 180.
            J'ai bien 1 à 20, 2 à 60 etc
            Pas de raison de faire plus compliqué jusqu'à plus ample informé non ?
            .
            0
          3. Modérateur
            @eriiic
            Jaimerai que lorsque a1 =20 que a3 =1
            Jaimerai que lorsque a1 =60 que a3 =2
            Jaimerai que lorsque a1 = 120 que a3=3
            Jaimerai que lorsque a1 =180 que a4=4


            1 - 20
            20 - 60
            60 - 120

            par contre .. après ce n'est pas 180 .. mais 200 (je pense qu'il s'est trompé dans l'énnoncé)
            vu qu'il indiquait :
            chaque niveau prend 20 exp recu de plus que le precedent

            ce qui correspond à
            premier intervalle : 20 puis 40 puis 60 puis 80 puis 100...etc...
            0
          4. Contributeur
            il s'est sans doute trompé, mais rien ne dit où...
            3 fois dans les valeurs ou 1 fois dans prend 20 exp ?
            De toute façon ce débat est stérile tant qu'il ne se sera pas mieux expliqué, d'où ma question introductive : et 21 ou 59 c'est 1 ou 2 ?
            0
        2. bonjour
          pourquoi pas faire une petite base de données en D1:E4 OU AILLEURS
          20 1
          60 2
          120 3
          180 4
          et faire une simple recherche verticale si tu tapes 20 dans A1 tu aura 1 en A3 si tu tape 120 en a1 tu aura 3 etc
          =RECHERCHEV(A1;D1:E4;2;0)
          Cest plus simple si l incrément change car on ne touches pas la formule
          ou alors je nai pas compris le problème!!!!
          0