Boucle selon une condition

Fermé
Riccoplus Messages postés 15 Date d'inscription dimanche 2 avril 2017 Statut Membre Dernière intervention 18 mai 2021 - 29 août 2019 à 22:18
Riccoplus Messages postés 15 Date d'inscription dimanche 2 avril 2017 Statut Membre Dernière intervention 18 mai 2021 - 14 nov. 2019 à 12:19
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

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
3 sept. 2019 à 02:56
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
2 sept. 2019 à 06:22
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
0
Riccoplus Messages postés 15 Date d'inscription dimanche 2 avril 2017 Statut Membre Dernière intervention 18 mai 2021
2 sept. 2019 à 19:04
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

0
Riccoplus Messages postés 15 Date d'inscription dimanche 2 avril 2017 Statut Membre Dernière intervention 18 mai 2021
14 nov. 2019 à 12:19
Bonjour Frenchie83,
désolé pour ma réponse tardive.
Merci beaucoup, cela fonctionne parfaitement !!!
Cordialement
Riccoplus
0