Imbriquer SOMME et ARRONDI en VBA Excel

Résolu
Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   -  
Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   -
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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  2. Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   10
     
    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
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      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
  4. Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   10
     
    re lami,

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

    Good Long Week :-)

    Sage est celui qui veut apprendre.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   10
     
    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