Somme de cellules

Bonjour,

Je cherche à sommer plusieurs cellules: certaines contiennent des données numériques du type 1.2E-3, d'autres avec un signe "<" les précédent (<1.2E-3). J'ai écris plusieurs fonctions qui vont chacune récupérer les données en question dans un autre fichier pour les ramener dans le classeur dans lequel je travaille. Par exemple, la ligne de code devrait ressembler à ceci:

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = Recherche_1("mois1") + Recherche_2("mois1") + Recherche_3("mois1")

Mon problème: je souhaiterais incorporer un code respectant l'algo suivant:

si Recherche_i ("...") est de la forme <1.2E-3, on néglige la donnée et elle ne participe pas à la somme ; au contraitre, si Recherche_i ("...") est de la forme 1.2E-3, on prend en compte la donnée dans la somme

Pouvez-vous m'aider svp ?

Merci d'avance.

Salut,

Regarde du cote de iif(Condition, VRAI, FAUX)

Ex:

iif(IsNumeric(Recherche_1("mois1")), Recherche_1("mois1"), 0)

Il serait surement interessant d'un point vu rapidite de passer les recherches par des variables

pour ne pas lancer la recherche 2 fois (1 fois pour la condition et 1 fois pour le VRAI).

++

Merci de ta réponse Minick !

Je pense saisir l'intérêt de iif, mais je ne vois pas trop à quel endroit du code l'insérer... En fait, j'ai une dizaine d'éléments à considérer (une dizaine de fonctions "recherche" donc).

Bonjour

As tu essayé de prendre la valeur de chaque recherche ?

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = Val(Recherche_1("mois1")) + Val(Recherche_2("mois1")) + Val(Recherche_3("mois1"))

A voir

Re,

En situation ca donnerai quelque chose comme:

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = iif(isNumeric(Recherche_1("mois1")), Recherche_1("mois1"), 0)  + iif(isNumeric(Recherche_2("mois1")), Recherche_2("mois1"), 0) + iif(isNumeric(Recherche_3("mois1")), Recherche_3("mois1"), 0) ...

Ou avec des variable:

Dim ResRecherche_1 as variant
Dim ResRecherche_2 as variant
Dim ResRecherche_3 as variant
....

ResRecherche_1 = Recherche_1("mois1")
ResRecherche_2 = Recherche_2("mois1")
ResRecherche_3 = Recherche_3("mois1")
...

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = iif(isNumeric(ResRecherche_1), ResRecherche_1, 0)  + iif(isNumeric(ResRecherche_2), ResRecherche_2, 0) + iif(isNumeric(ResRecherche_3), ResRecherche_3, 0) ...

++

-- 18 Juil 2011, 14:11 --

Banzai64 a écrit :

Bonjour

As tu essayé de prendre la valeur de chaque recherche ?

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = Val(Recherche_1("mois1")) + Val(Recherche_2("mois1")) + Val(Recherche_3("mois1"))

A voir

Salut,

Effectivement ca doit le faire aussi avec Val.

++

Parfait, la technique "Val" fonctionne très bien ! Mais merci à vous deux, ta technique Minick reste également intéressante !

Rechercher des sujets similaires à "somme"