Boucle selon une condition

Bonjour tout le monde,
je vous sollicite pour une application que je n'arrive pas à résoudre pour faire une boucle selon une condition.
Je voudrais calculer chaque cellule de la colonne D suivant la condition : "Si C* < A2, alors D* = (C* + n x B2) tant que D* n'est pas > ou = à A2".
Merci pour votre aide
Riccoplus.

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Mauvaise interprétation de ma part, voici le corrigé
    Function D(A As Long, B As Long, C As Long) As Long
        Coef = 1
        If C < A Then
            Do While D < A
                Temp = C + (Coef * B)
                D = Temp
                If Temp > A Then Exit Function
                Coef = Coef + 1
            Loop
        End If
    End Function


    Pour écrire cette formule en vba, si c'est bien ce que vous voulez.
        Range("D2:D" & [C10000].End(xlUp).Row).FormulaR1C1 = "=D(R2C1,R2C2,RC[-1])"


    Cdlt
    1. Bonjour,

      Si j'ai bien compris,
      recopiez cette fonction dans un module standard
      Function D(A As Long, B As Long, C As Long) As Long
          D = C + B
          If D >= A Then
              D = 0
              Exit Function
          End If
          Coef = 1
          If C < A Then
              Do While D < A
                  Temp = C + (Coef * B)
                  If Temp < A Then
                      D = Temp
                      Coef = Coef + 1
                  Else
                      Exit Function
                  End If
              Loop
          End If
      End Function

      Puis en D2 saisissez la formule suivante(et à tirer vers le bas):
      =D($A$2;$B$2;C2)

      Cdlt
      1. Bonjour Frenchie83,
        merci pour votre réponse, j'ai mis la fonction dans le module 1 (voir photo)et la formule dans D2 puis tiré vers le bas, mais le résultat n'est pas vraiment ce que je souhaiterais (voir photo) :
        En D2, je devrais avoir 12
        En D3, 11
        En D4, 10
        En D5, 12 (6+3+3)
        Qu'en pensez-vous ?
        Ai-je fais une mauvaise manip ?
        Et, comment dois-je faire pour faire une macro à partir de cette fonction dans le module 1 ?
        Merci pour votre réponse
        Cordialement
        Riccoplus

        1. Bonjour Frenchie83,
          désolé pour ma réponse tardive.
          Merci beaucoup, cela fonctionne parfaitement !!!
          Cordialement
          Riccoplus