Un code vb pour simplifier

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
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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
    1. 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
  2. Contributeur
    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)
    1. re
      c'est ca de doublonner ........ je crains d'avoir l'air c.... mais votre solution SOMME SI (.... je la met ou: à chaque f(x) ? avant ou apres les SI(....; si(.... encore merci
    2. Modérateur
      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
  3. Contributeur
    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
    1. 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
  4. Contributeur
    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...
    1. re
      merci pour votre conseil, je l'archive, il servira; quant au tableau ;apres avoir remanié les formules ;il a l'air de fonctionner au cas ou vous voudrez ; je vous le joint (pour correction et commentaires)
      au plaisir

      http://www.cijoint.fr/cjlink.php?file=cj200903/cijqTazGqJ.xls