Fonction personnalisée = ARG!

  • Initiateur de la discussion Initiateur de la discussion kotek
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

kotek

Guest
Bonjour,

J'aimerais faire la somme cumulée d'un nombre variable de valeurs. Pour ce faire, j'ai créé la fonction suivante dans le module de ma feuille.

Private Function SommeYTDP(ParamArray Argument() As Variant) As Double

Application.Volatile True

Dim i As Integer

For i = 1 To Range("MonthP").Value
SommeYTDP = SommeYTDP + CDbl(Argument(i))
Next i

End Function

Jusque là, tout va bien, je rentre un nombre de valeur (en général 12), et ma fonction va pomper la valeur dans MonthP (disons 7) et fait la somme des 7 premières valeurs.

Là où ça se corse, c'est quand j'ai fait la même fonction dans un autre fichier qui doit être ouvert en même temps. Et là, cacastrophe ! Si je recalcule la premiere feuille, j'ai ARG! dans la deuxième. Si je recalcule la deuxième, j'ai ARG! dans la première. J'ai pourtant pris soin de différencier les noms de fonctions (SommeYTDP et SommeYTDF) et des champs (MonthF et MonthP) dans les modules respectifs.

Si quelqu'un a réussi à me lire jusque là et a compris l'idée, tout d'abord félicitations et ensuite a-t-il une idée de ce qui m'arrive et de comment résoudre ce bazar ?

D'avance, merci.
 
Re : Fonction personnalisée = ARG!

A la demande générale 😀, un p'tit exemple. Les deux feuilles font la même chose : elles utilisent une fonction personnalisée qui fait la somme cumulée du nombre de mois voulu. Et quand on ouvre les deux fichiers en même temps, l'un des deux ne calcule pas.

Et merci de m'avoir lu !
 

Pièces jointes

Re : Fonction personnalisée = ARG!

Bonjour kotek, re jmps,

Tu devrais plutôt essayer comme ça :
Code:
[SIZE=2]Function SommeYTDP([B]N[COLOR=navy] As Integer[/COLOR],[/B] ParamArray Argument()[COLOR=navy] As Variant[/COLOR])[COLOR=navy] As Double
Dim [/COLOR]i[COLOR=navy] As Integer[/COLOR]
      Application.Volatile [COLOR=navy]True[/COLOR]
      [COLOR=navy]For [/COLOR]i = 0[COLOR=navy] To [/COLOR][B]N[/B] - 1
            SommeYTDP = SommeYTDP + [COLOR=navy]CDbl[/COLOR](Argument(i))
      [COLOR=navy]Next[/COLOR] i
[COLOR=navy]End[/COLOR] Function[/SIZE]
Et dans la feuille :
=SommeYTDP(MonthP;B7;C7;D7;E7;F7;G7;H7;I7;J7;K7;L7;M7)

Même style dans l'autre classeur...

Cordialement
 
Re : Fonction personnalisée = ARG!

Merci pour ta réponse JMPS,

En attendant j'ai bidouillé de mon côté et j'ai trouvé une astuce qui fonctionne aussi. Je crois que ta méthode et la mienne soignent un peu le même mal.

De mon côté, j'ai défini plus précisemment le chemin du champs "MonthP", du genre Workbooks("Machin.xls").Sheets("Truc").Range("MonthP").Value et ça à l'air de fonctionner.

Mais je garde ta méthode pour le cas où...

Merci !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
266
Réponses
3
Affichages
441
Réponses
5
Affichages
281
Retour