FONCTION SOMME EN MACRO EXCEL

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 9 juin 2011 à 13:57
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

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
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
xgluk Messages postés 10 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 12 mai 2006
14 juin 2011 à 23:49
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.
cs_fridg Messages postés 1 Date d'inscription mercredi 7 octobre 2009 Statut Membre Dernière intervention 13 juin 2011
13 juin 2011 à 15:31
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..
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 juin 2011 à 19:54
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_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 juin 2011 à 19:52
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.
xgluk Messages postés 10 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 12 mai 2006
9 juin 2011 à 14:11
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_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 juin 2011 à 13:57
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...
Rejoignez-nous