Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Focntion DSUM attribuée à une cellule avec VBA

6 réponses
Avatar
Morgan
Bonjour,
J'ai besoin de vos lumières sur un comportement bizar de la fonction DSUM
attribuée à une cellule avec VBA.

J'ai une petite appli excel qui créer (entre autre) une nouvelle feuille,
copie des données (noms) sur cette feuille et attribue à une case la fonction
DSUM (propriété formula d'un objet range).
Lorsque je fais ça : range("A1").formula="=DSUM(range;field;criteria)" ça
marche pas (erreur)
et lorsque je fais ça : range("A1").formula="DSUM(range;field;criteria)" et
qu'ensuite sur la feuille j'ajoute manuellement le = ça marche???

Petite précision : au départ le résultat de DSUM vaut 0. En effet sur ma
feuille j'ai une liste de personne représentant chacun une valeur (tantième),
au fur et à mesure que les gens arrivent (à l'AG pour ceux qui devinent) je
met une croix en face de leur nom et je veux que la case DSUM compte le nb de
tantièmes qui sont arrivés.

6 réponses

Avatar
AV
Remplace les points-virgules par des virgules :
range("A1").formula="=DSUM(range;field;criteria)"
==>>
range("A1").formula="=DSUM(range,field,criteria)"

AV
Avatar
CAP2
Salut,

As-tu nécessairement besoin de VBA ?

Sinon, tu peux comptabiliser simplement comme ça (partant du principe que tu
coches en mettant des X) :

=NB.SI(A1:A50;"X")

A adapter à ta plage de noms...

Ca marche ?

CAP2
Avatar
Morgan

Salut,

As-tu nécessairement besoin de VBA ?
Oui car la liste des gens est susceptible d'évoluer au cours de l'AG et

chaque feuille correspond a une résolution.

Sinon, tu peux comptabiliser simplement comme ça (partant du principe que tu
coches en mettant des X) :

=NB.SI(A1:A50;"X")
oui mais ici je coche le nb de personnes or chaque personne n'a pas le même

'poids' et c'est ce poids que je veux comptabilisé.

A adapter à ta plage de noms...

Ca marche ?

CAP2


Pour AV plus haut la syntaxe de ce que je fais est correcte (dans Excel ici
ce sont des fautes de frappe) puisque lorsque je met le = manuellement la
fonction me renvoi le resultat escompté, le problemeest :
pourquoi est-ce que avec VBA ça marche pas?

Avatar
CAP2
Pourrais-tu nous passer le code pour qu'on puisse mieux voir y réfléchir ?

CAP2
Avatar
Morgan

Pourrais-tu nous passer le code pour qu'on puisse mieux voir y réfléchir ?

CAP2


Toutes mes excuses à AV sa solution fonctionne (je n'avais même pas vérifié,
bouhouhou)

Mais maintenant j'aimerais bien qu'on m'explique pourquoi la formule s'écrit
DSUM(rang;field;criteria) dans une case excel sinon erreure et qu'il faut
écrire DSUM(range,field,criteria) dans son utilisation VBA sinon erreur.

Merci en tout cas j'ai résolu mon problème!

Morgan

Avatar
CAP2
Le fait est que les fonctions de calcul VBA demandent une séparation des
arguments par des virgules, ce qui doit venir du fait que lorsqu'on crée une
fonction via VBA, on sépare les arguments attendus ainsi :

Function toto(Arg1 as zzzz, Arg2 as zzzz,......)
toto=zzzzzzzzzzzzzzzzz
End Function

Les fonctions EXCEL (certaines fonctions VBA n'existent pas sur EXCEL, et
vice-versa) demandent quent à elles une séparation des arguments par des
points-virgules...

Ce n'est pas une explication, mais juste une constatation...

Les excelliens corrigeront ou complèteront ;o))

CAP2