Imbriquer SOMME et ARRONDI en VBA Excel [Résolu/Fermé]

Signaler
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
-
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
-
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


5 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 524
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
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
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.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 524
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 524
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.
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
10
re lami,

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


Good Long Week :-)


Sage est celui qui veut apprendre.
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
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