Un code vb pour simplifier

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

4 réponses

  1. m@rina Messages postés 27633 Date d'inscription   Statut Modérateur Dernière intervention   11 566
     
    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
    0
    1. gilou
       
      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
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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)
    0
    1. gilou
       
      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
      0
    2. m@rina Messages postés 27633 Date d'inscription   Statut Modérateur Dernière intervention   11 566
       
      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
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0
    1. gilou
       
      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
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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...
    0
    1. gilou
       
      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
      0