Un code vb pour simplifier
gilou
-
gilou -
gilou -
Bonjour,
je suis confronté à un probleme de valeurs negatives qui me faussent une addition ,ma question est la suivante:
dans la plage de cellules (f4: k30) toute valeur <0 = 0 je vous remercie en esperant que l'en mettant ce code
dans une procedure selection_change je puisse arriver a mes fins
je suis confronté à un probleme de valeurs negatives qui me faussent une addition ,ma question est la suivante:
dans la plage de cellules (f4: k30) toute valeur <0 = 0 je vous remercie en esperant que l'en mettant ce code
dans une procedure selection_change je puisse arriver a mes fins
Configuration: Windows XP Internet Explorer 7.0
4 réponses
-
Bonjour,
Je suppose que tes cellules contiennent des formules. Dans ce cas, la cellule peut changer sans pour autant être modifiée. Il me semble donc que ce n'est pas un événement SelectionChange dont tu as besoin, mais plutôt d'un Calculate.
Par exemple :
Private Sub Worksheet_Calculate() For Each cellule In Range("F4:K30") If cellule.Value < 0 Then cellule.Value = 0 End If Next End Sub
Cela étant dit, s'il s'agit bien de formules, tu les perdras si la valeur est inférieure à 0. Je pense qu'il serait plus sage d'ajouter le IF x<0 dans la formule même...
m@rina-
merci
pouvez -vous me donner un modele concret car je n'ai jamais melangé des macros avec des fonctions
si la f(x) est SI(.......;SI(........;SI(.........))))ou doit -on mettre le IF x<0 de plus est-ce vraiment x ou faut-il nommer la cell si :alors je crains une ref circulaire ; s v p expliquez moi cela dans le detail afin d'eviter qu'en voulant simplifier ,jen'aille "scratcher" des fonctions qui m'ont deja pris la tete en tout cas merci de m'avoir prevenu
-
-
bonjour Gilou,M@rina
tiens, pour 1 fois j'ai mis l'arobase... :-#
syntaxe VBA:
Set plage = Range("F4:F30")
total = Application.SumIf(plage, ">=0", plage)
mais + simplement par formule
=SOMME.SI(F4:F30;">=0";F4:F30)-
-
Hello Michel_m (du coup j'ai ajouté le m aussi ! ;)
Pourquoi un somme.si ? Je n'ai pas vu que Gilou parlait de la somme de cette plage.. Mais bon, j'ai peut être pas tout lu !! :D Ou je n'ai peut être pas tout compris, ça c'est possible aussi !
Donc, Gilou, tu nous réexplique avec un peu plus de détails ?
m@rina
-
-
Coucou M@rin@
et 2 arobases, 2!
bin ch'ais pas, c'est le mot "addition" qui m'a aiguillé
"qui me faussent une addition ,ma question est la suivante:
dans la plage de cellules (f4: k30) toute valeur <0 = 0 "
Alors attendons Gilou
bonne soirée
-
bonjour
merci d'attendre . Alors voila le sujet . Dans une feuille j'ai crée un tableau qui me calcule des temps passés dans des tranches horaires : il suffit de saisir l'heure de debut et l'heure de fin pour savoir combien de temps
à ete passé de telle à telle heure : exemple : de 3 à 14 hr cela donne : de 0 à5 =2; de5à7 =2 ; de7à8 =1 ;de8à17= 5 ces resultats sont obtenus par une "armee" de f(x) SI mais parfois selon la saisie j'obtiens des valeurs negatives malgre la complexite des fonctions (probablement une mauvaise gestion des conditions) neanmoins si je n'avais pas eu envie de totaliser chaque colonne tout irai bien donc les valeurs negatives me genent ,c 'est là qu'aimablement vous m' aidez à convertir ces valeurs en 0
nb)1 j'ai 3 "etudes" de ce tableau 1) avec vba +/- potable ; 2) fonction si(et + recherche : pas mal mais dure à tirer dans le tableau ; 3) f(x) si: ma preferée ormis les val negatives
je vous ai tout dit le sujet principal est : comment convertir des valeurs negatives en 0 sans perturber l'action d'une fonction
merci d'avance
-
-
bo,jour,
rien, mais alors rien compris à tes explications...
a tout zazar si tu veux que la formule soit égale à zéro si le résultat est négatif:
=MAX(0;taformule)
Edit 14:03h: Au besoin met un extrait de ton classeur en pièce jointe, ce sera le mieux...