Imbriquer SOMME et ARRONDI en VBA Excel

Résolu/Fermé
Manshiz Messages postés 184 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 18 août 2012 - 2 juin 2011 à 05:26
Manshiz Messages postés 184 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 18 août 2012 - 2 juin 2011 à 10:49
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


A voir également:

5 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 2/06/2011 à 06:15
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
Manshiz Messages postés 184 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 18 août 2012 10
Modifié par Manshiz le 2/06/2011 à 07:13
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 2/06/2011 à 07:07
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 2/06/2011 à 07:26
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
Manshiz Messages postés 184 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 18 août 2012 10
Modifié par Manshiz le 2/06/2011 à 09:40
re lami,

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


Good Long Week :-)


Sage est celui qui veut apprendre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Manshiz Messages postés 184 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 18 août 2012 10
2 juin 2011 à 10:49
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