Microsoft 365 Formule avec conditions

jebibo

XLDnaute Occasionnel
Bonjour à tous,
je sollicite votre aide sur un fichier , je vous explique. j'ai un fichier avec des montants et je désir arrondir selon la charte qui est ici-bas j'ai essayé la formule si.conditions mais je n'y parvient pas.
Peut-être qu'il y a une formule ou une macro qui pourrait régler mon problème. Je joint un fichier.
Merci pour votre aide à l'avance.
Bonne soirée!

1635203939754.png
 

Pièces jointes

  • FORMULE_ARRONDISSEMENT_PRIX.xlsx
    874.1 KB · Affichages: 13
Solution
Bonjour jebido, le forum

Avec une fonction personnalisée, si cela te convient, voir en colonne E.

Bien cordialement,@+
VB:
Function Ch_Rd#(ByVal Valeur#)
With Application.WorksheetFunction
    Select Case Valeur
        Case Is < 0.3
            Ch_Rd = .Round(Valeur, 2)
        Case Is < 1.99
            Ch_Rd = .RoundDown(Valeur, 1) + 0.09
        Case Is < 9.99
            Ch_Rd = Valeur - .RoundDown(Valeur, 0)
            Select Case Ch_Rd
            Case Is < 0.3
                Ch_Rd = 0.29 + .RoundDown(Valeur, 0)
            Case Is < 0.5
                Ch_Rd = 0.49 + .RoundDown(Valeur, 0)
            Case Is < 0.8
                Ch_Rd = 0.79 + .RoundDown(Valeur, 0)
            Case Else
                Ch_Rd = 0.99 +...

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour jebido, le forum

Avec une fonction personnalisée, si cela te convient, voir en colonne E.

Bien cordialement,@+
VB:
Function Ch_Rd#(ByVal Valeur#)
With Application.WorksheetFunction
    Select Case Valeur
        Case Is < 0.3
            Ch_Rd = .Round(Valeur, 2)
        Case Is < 1.99
            Ch_Rd = .RoundDown(Valeur, 1) + 0.09
        Case Is < 9.99
            Ch_Rd = Valeur - .RoundDown(Valeur, 0)
            Select Case Ch_Rd
            Case Is < 0.3
                Ch_Rd = 0.29 + .RoundDown(Valeur, 0)
            Case Is < 0.5
                Ch_Rd = 0.49 + .RoundDown(Valeur, 0)
            Case Is < 0.8
                Ch_Rd = 0.79 + .RoundDown(Valeur, 0)
            Case Else
                Ch_Rd = 0.99 + .RoundDown(Valeur, 0)
            End Select
        Case Is < 19.99
            Ch_Rd = Valeur - .RoundDown(Valeur, 0)
            Select Case Ch_Rd
            Case Is < 0.5
                Ch_Rd = 0.49 + .RoundDown(Valeur, 0)
            Case Else
                Ch_Rd = 0.99 + .RoundDown(Valeur, 0)
            End Select
        Case Is < 39.99
            Ch_Rd = (.Round(Valeur + 0.01, 1)) - 0.01
        Case Is < 99.99
            Ch_Rd = (Valeur / 10) - .RoundDown(Valeur / 10, 0)
            Select Case Ch_Rd
            Case Is < 0.3
                Ch_Rd = (.RoundDown(Valeur / 10, 0) + 0.299) * 10
            Case Is < 0.5
                Ch_Rd = (.RoundDown(Valeur / 10, 0) + 0.499) * 10
            Case Is < 0.8
                Ch_Rd = (.RoundDown(Valeur / 10, 0) + 0.799) * 10
            Case Else
                Ch_Rd = (.RoundDown(Valeur / 10, 0) + 0.999) * 10
            End Select
        Case Else
            Ch_Rd = (Valeur / 10) - .RoundDown(Valeur / 10, 0)
            Select Case Ch_Rd
            Case Is < 0.5
                Ch_Rd = (.RoundDown(Valeur / 10, 0) + 0.499) * 10
            Case Else
                Ch_Rd = (.RoundDown(Valeur / 10, 0) + 0.999) * 10
            End Select
    End Select
End With
End Function
 

Pièces jointes

  • FORMULE_ARRONDISSEMENT_PRIX - Copie.xlsm
    887.9 KB · Affichages: 7
Dernière édition:

Statistiques des forums

Discussions
312 220
Messages
2 086 381
Membres
103 198
dernier inscrit
CACCIATORE