FONCTION SOMME EN MACRO EXCEL

Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- - Dernière réponse : heljy
Messages postés
5
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
15 juin 2011
- 15 juin 2011 à 14:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53268-fonction-somme-en-macro-excel

Afficher la suite 
cs_Julien39
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
239 -
Sous excel on a accès aux fonctions d'excel comme SOMME, ton algorithme est donc inutile, de plus, il mettra beaucoup plus de temps à s'exécuter et ne gèrera pas aussi bien les erreurs...
xgluk
Messages postés
10
Date d'inscription
vendredi 14 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2006
-
C'est effectivement ce que je dis dans mon commentaire: la fonction SOMME existe dans excel et en tant que tel, cette source est innutile!
Sauf que par pure curiosité j'ai essayé de reproduire cette fonction et en cherchant comment faire j'ai trouvé des questions similaires aux miennes dans les forums et cela peut servir pour développer d'autres fonctions qui n'existent pas nativement dans excel.
L'intérêt n'est pas ici de pouvoir faire une somme ou un produit mais de voir comment on peut accéder à un ensemble de plages de cellules sélectionnées pour travailler dessus à travers une fonction.
cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
60 -
Oui, voir ces deux fonctions :
WorksheetFunction.Sum
WorksheetFunction.Product

Ces fonctions acceptent des ensembles de plages, même disjointes.
Ce qui permettrait d'utiliser un objet "Plage" de type Range, plutôt que ce tableau de Variant.

Pour ton choix "Param" : astuce.
Puisque tu n'as que deux types possibles, autant imposer le choix plutôt que de laisser le programmeur choisir une chaine (tu te poseras la question plus tard pour savoir si c'est un "p" minuscule ou majuscule qu'il faut envoyer ...)
Dans la partie Déclaration de ta page de code :
Enum enumMesOpérations
[Addition]
[Multiplication]
End Enum
Et dans la déclaration de ta fonction :
Function aaa(Param As enumMesOpérations, ParamArray Plage()) As String

Ta fonction est dimensionnée/renvoie un String, alors que tu calcules quelque chose qui ressemble plutôt à un Double !
Attention à ce genre de conversion implicite.
cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
60 -
PS : Pour le Enum
Bien sûr, il faut aussi modifier le If :
If Param = "s" Then
en
If Param = [Addition] Then

Tu verras que dès que taperas le =, la liste des choix possibles apparaitra sous forme de liste.

D'ailleurs, mieux aurait valu un Select Case que ces deux If à la suite.
cs_fridg
Messages postés
1
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
13 juin 2011
-
Attention egalement au nom de ta fonction xgluk. "aaa" ca ne veut rien dire du tout donc ca ne sert a rien.
Meme pour un petit exercice du genre c'est important de penser a ceux qui voudraient utiliser ton code (c'est bien pour ca que tu l'exposes publiquement, non ?). S'ils ne comprennent pas a peu pres a quoi elle sert rien qu'en voyant son nom, ils ne l'utiliseront pas. Toi meme dans deux ou trois mois quand tu rouvriras ton classeur excel tu te diras "c'est quoi deja ce "aaa"...
Indice pour la nommer : pense a ce qu'elle fait. Elle calcule une somme ou un produit. Inspire toi de la facon dont les developpeurs d'Excel ont nomme leurs fonctions.
Egalement le nom de tes variables devrait etre plus explicite. Qu'est ce qu'il represente ton "c", ton "i", tes "pl" ? Si tu es capable de le dire en tres peu de mots, utilise
les dans ton code ! Pas d'abbreviations paresseuses !
J'attends une mise a jour..
xgluk
Messages postés
10
Date d'inscription
vendredi 14 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2006
-
Merci pour les commentaires, je met la fiche à jour dès que j'ai 2 secondes de dispo.
Juste pour info, le nom aaa n'a pas été choisit au hasard, c'est pour tester l'utilisation du menu d'insertion de fonction sans aller chercher la fonction au fin fond de la liste. Ceci dit, tu as raison, avant de la poser ici j'aurais du lui donner un p'tit nom plus parlant.
Merci encore.
heljy
Messages postés
5
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
15 juin 2011
-
je n'ai pas de commentaires particuliers à ajouter si ce n'est un grand merci pour tes efforts à partager tes connaissances et découvertes, même si elles ne sont pas complètement satisfaisantes.
Bien amicalement