Imbriquer SOMME et ARRONDI en VBA Excel

Résolu
Bonjour,

Bonjour à tous,

j'aimerais imbriquer SOMME dans ma fonction personnalisée.

Public Function ARRONDIR(Nombre As Double, Nb_chiffres As Double) As Double
Dim indice As Double
indice = 0.5
ARRONDIR = Round(Nombre / indice, 1) * indice
End Function


Dans l'aide je n'ai rien trouvé, et j'ai testé plusieures méthodes sans résultat.
Merci pour votre aide



--
Sage est celui qui veut apprendre.

5 réponses

  1. Modérateur
    Salut,

    SOMME c'est aussi une fonction personnalisée?
    Si oui alors tu n'as qu'à faire appel à la fonction SOMME tout simplement.

    et j'ai testé plusieures méthodes sans résultat.
    Montre nous ce que tu as testé.

    Voici ici un exemple https://jml85.pagesperso-orange.fr/Pages/Excel/Cours/Ecrit/Cours13.html

    GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
    106485010510997108
    0
    1. Bonjour lami,

      ça y est, j'ai trouvé. Voici la solution.

      Public Function ARRONDIR_SOMME(Plage As Object) 
      Dim Indice As Double, cell As Range, Somme As Double, Total As Double
       
             Application.Volatile 
          Indice = 0.5 
             For Each cell In Plage 
                         Somme = Somme + cell.Value 
                         Total = Round(Somme / Indice, 1) * Indice 
             Next 
             ARRONDIR_SOMME = Total 
         End Function 
      


      Merci quand même pour le lien.

      Sage est celui qui veut apprendre.
      0
      1. Modérateur
        Salut,

        ça y est, j'ai trouvé. Voici la solution.
        Tant mieux ;-)
        Merci d'avoir poster la solution.
        GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
        106485010510997108
        0
        1. Modérateur
          For Each cell In Plage
          Somme = Somme + cell.Value
          Total = Round(Somme / Indice, 1) * Indice
          Next
          ARRONDIR_SOMME = Total


          En revanche je ne vois pas pourquoi tu mets le calcul de Total dans la boucle, vu que c'est la valeur finale qui t'intéresse et pas les valeurs intermédiaires.
          En tout cas à l'intérieur de la boucle à chaque passage on affecte une autre valeur et à la sortie de la boucle la fonction renvoie le dernier total.
          Une fois que tu as finis de additionner les cellules il suffit d'arrondir à la fin la somme obtenue.
          For Each cell In Plage          
            Somme = Somme + cell.Value 'additionne les cellules                    
          Next          
          ARRONDIR_SOMME = Round(Somme / Indice, 1) * Indice   

          Et puis Somme n'est pas une fonction (c'est ça que j'ai cru selon ton message) mais une variable.
          0
      2. re lami,

        je te remercie pour cette correction. Tu as tout à fait raison.

        Good Long Week :-)

        Sage est celui qui veut apprendre.
        0
        1. Suite à la remarque de lami voici le code simplifié.

          Function ARRONDIR_SOMME(Plg As Range)
          Application.Volatile
          Dim Indice As Double
          Indice = 0.5
          ARRONDIR_SOMME = Round(WorksheetFunction.Sum(Plg) / Indice, 1) * Indice
          End Function
          
          0