Aide pour formule personnalisée sous Excel

Résolu
Sylvain_B -  
Sylvain_B Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je reçois une erreur "#VALEUR!" pour le code suivant :
"
Public Function SEM(PlageDeCellules As Range) As Double

Dim ecart, racine As Double
Dim valeur As Integer

ecart = WorksheetFunction.StDev(PlageDeCellules)
valeur = WorksheetFunction.Count(PlageDeCellules)
racine = WorksheetFunction.SqrtPi(ecart)

SEM = ecart / racine

End Function
"
Quelqu'un a-t-il une idée pour me venir en aide ?

Merci par avance

7 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

sans doute qu'un fichier exemple aidera à réfléchir.
On ne sait pas du tout ce que tu lui passes en paramètre lors de l'utilisation.
cjoint.com et coller ici le lien fourni.

eric
0
Sylvain_B
 
Bonjour,

J'utilisais déjà cette formule sous Excel 2003 en tapant simplement "=sem(" puis en sélectionnant ma plage de données.
Le calcul se faisait automatiquement.
Là, ma formule est bien reconnue quand je tape "=sem(", j'arrive à sélectionner mes données mais aucun calcul dans la cellule juste "#VALEUR!"
:(
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour Sylvain, Eriiic,

Je rejoinds Eriiic dans ces propos. Sans fichier exemple il nous est iùmpossible de répondre car on ne sait pas quels types de données sont utilisées dans tes formules. Les erreurs #Valeur sont en effet causées par une erreur de type de donénes (texte au lieu de nombre par exemple...)

Voici ce que dit l'aide Excel :
Corriger une erreur #VALEUR!
Survient lorsqu'un type d'argument (argument : valeurs utilisées par une fonction pour effectuer des opérations ou des calculs. Le type d'argument utilisé par une fonction lui est spécifique. Les arguments courants utilisés dans les fonctions comprennent les valeurs numériques, les valeurs de texte, les références de cellule et les noms.) ou d'opérande (opérande : éléments situés de chaque côté d'un opérateur dans une formule. Dans Microsoft Excel, les opérandes peuvent être des valeurs, des références de cellule, des noms, des étiquettes et des fonctions.) inapproprié est utilisé.

Causes et solutions possibles

- La saisie de texte dans une formule nécessitant une valeur numérique ou une valeur logique, telle que VRAI ou FAUX
Microsoft Excel ne peut pas convertir le texte dans le type de donnée approprié. Vérifiez que la formule ou la fonction est correcte pour l'argument ou l'opérande nécessaire, et que les cellules auxquelles la formule fait référence contiennent des valeurs valides. Par exemple, si la cellule A5 contient un nombre et que la cellule A6 contient le texte « Non disponible », la formule =A5+A6 renvoie l'erreur #VALEUR!.

- L'entrée ou la modification d'une formule matricielle suivie de la frappe de la touche ENTRÉE
Sélectionnez la cellule ou la plage de cellules contenant la formule matricielle (formule matricielle : formule qui effectue plusieurs calculs sur un ou plusieurs ensembles de valeurs et qui renvoie un ou plusieurs résultats. Les formules matricielles sont placées entre accolades { } et sont entrées en appuyant sur Ctrl+Maj+Entrée.), appuyez sur la touche F2 pour modifier la formule, puis appuyez sur CTRL+MAJ+ENTRÉE.

- L'entrée d'une référence de cellule, d'une formule ou d'une fonction en tant que constante matricielle
Vérifiez que la constante (constante : valeur qui n'est pas calculée et, par conséquent, ne change pas. Par exemple, le nombre 210 et le texte « Gains trimestriels » sont des constantes. Une expression, ou une valeur obtenue à partir d'une expression, n'est pas une constante.) matricielle n'est pas une référence de cellule, une formule ou une fonction.

- L'attribution d'une plage à un opérateur ou à une fonction qui exige une seule valeur et non pas une plage
Transformez la plage en valeur unique.Modifiez la plage pour y inclure soit la même ligne soit la même colonne que celle contenant la formule.

- L'utilisation d'une matrice non valide dans l'une des fonctions de feuille de calcul de matrices
Vérifiez que les dimensions de la matrice (matrice : matrice rectangulaire de valeurs ou plage de cellules associée à d'autres matrices ou plages pour générer plusieurs sommes ou produits. Microsoft Excel dispose de fonctions de matrice prédéfinies permettant de générer des sommes ou des produits.) sont appropriées aux arguments de la matrice.

- L'exécution d'une macro qui entre une fonction renvoyant la valeur #VALEUR!

0
Paf
 
bonjour,

bien que sous 2003, cette fonction personnalisée me donne le même résultat :
"#VALEUR!"

après un tas d'essais sur les déclaration de variables, de changement de format de la plage (sans effet) j'ai supprimé la ligne valeur=... non utilisée et déterminé racine directement en vba . ça fonctionne:
Public Function SEM(PlageDeCellules As Range) As Double
Dim ecart, racine As Double
ecart = WorksheetFunction.StDev(PlageDeCellules)
'valeur = WorksheetFunction.Count(PlageDeCellules)
racine = Sqr(ecart * 4 * Atn(1))
SEM = ecart / racine
End Function

A+
0

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

Posez votre question
Sylvain_B Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à tous,

1/ Merci pour vos réponses
2/ Toujours la même erreur
3/ Précision : je suis sous 2010
4/ Voici le lien : http://cjoint.com/data/0Gni74dYzO3.htm
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

il faut enregistrer ton fichier en .xlsm si tu veux que les macros soient inclues dedans.
Là on n'a pas ta fonction personnalisée...
Apparemment elle provient d'un autre fichier : PERSONAL.xlam.

eric
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Je viens d'essayer votre fichier sur mon Excel 2003, la fonction de paf fonctionne. Elle donne le résultat (approché) : 0,641043131 au lieu de 0,645497224. Mais on est presque bon non?
Par contre, j'ai l'impression que c'est la liaison vers un autre classeur ('C:\Documents and Settings\SBRI\Application Data\Microsoft\AddIns\PERSONAL.xlam'!) qui bloque...
La fonction personnalisée de Paf a fonctionné chez moi car je l'ai placée dans un module du classeur... Essaye déjà ça pour voir :
- depuis ta feuille de calcul : ALT+F11
- Insertion/Module
- copier coller le code de Paf.
Et tester!
0
Sylvain_B Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
:)

Merci !

C'est ok maintenant.

En fait c'était "personal.xlam" qui merdait.
J'ai donc corrigé et mis le code de Paf "à jour" par rapport à la formule de calcul, ce qui donne au final :

"
Public Function SEM(PlageDeCellules As Range) As Double

Dim ecart, racine As Double
ecart = WorksheetFunction.StDev(PlageDeCellules)
valeur = WorksheetFunction.Count(PlageDeCellules)

racine = Sqr(valeur)
SEM = ecart / racine

End Function
"
J'ai besoin du nombre de valeur dans la plage de données pour calculer mon paramètre "racine"
0