Vba conditions

Bonjour,

Ayant jamais programmé en vba, et étant obligé de m'en servir pour mon travail, je viens

poster mon problème ici en ésperant trouver quelques choses.

Ce qui me manque c'est ce traitement là:

J'ai 2 colonnes (valeurs) : C et V sous excel

J'ai 3 conditions à faire pour le nettoyage de ces données pour qu'ensuite je pourrai avoir

ma courbe qui va faire l'objet de l'étude globale qu'il faut que je fasses.

1: if C >= 1000 (Réaffectation de la valeur C sur toutes les lignes où C=0 && V#0)

2: if C>= (Remplacer C par la médiane)

3: if (C= 0 && delta(V) > 50) (remplacer C par la médiane)

Merci d'avance

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    « étant obligé de m'en servir » Pourquoi est-ce une obligation ???

    Pas besoin du VBA, ce problème peux être résolu avec de simples formules dans des colonnes libres et un filtre !!!
    1. slt patrice

      si t'as des solutions sans passer par vba , je suis preneurrrrrrrrrrrr
  2. coucou,

    J'ai rien compris à ta demande.

    La première condition est contradictoire car tu parles C>= 1000 mais en même temps c=0 ???

    ensuite, tu parles d'une médiane, elle est déjà calculé? C'est la médiane de la colonne C C'est la médiane de V???

    Delta(V), je suis peut être une bille, mais c'est quoi?
    et la médiance, elle est déjà calculée?? Faut la calculer?? Comment est ce qu'elle se calcule.

    Il faut que tu précises tout ca avant d'avoir une aide.
    1. slt mélanie,

      Alors pour être plus clair :

      if C >= 1000 (Réaffectation de la valeur C sur toutes les lignes où C=0 && V#0)

      admettant que j'ai une C = 1598 donc C > 1000 ----> réaffectation du C là où il y a la condition

      C=0 && V#0 C'est à dire que C va prendre la valeur réaffectée

      Exemple

      C V
      0 0
      15 45
      0 15
      0 12
      1598 45
      489 89

      on a la valeur 1598 ---> elle est >= 1000 ---> donc réaffectation sur là ou C=0 et V # 0

      on a 2 fois C=0 et V #0 ----> 1598 / 3 =535.66 (J'ai pris 3 , ce qui correspond aux occurences C=0 V#0 + la valeur meme de 1598)

      Le résultat donnera :

      C V
      0 0
      15 45
      535.66 15
      535.66 12
      535.66 45
      489 89

      Pour la médiane : elle est pas calculée justement. le calcul se fait au fur et a mesure

      médiance=médiane faute de frappe

      Delta(V) : V - (V-1)

      J'espere etre clair
  3. Avec le valeurs de C en colonne A (A2 à A7) et celles de V en colonne B (B2 à B7)

    Formule en C2 :
    =SI(ET(MAX($A$2:$A$7)>1000;OU(ET(A2=0;B2<>0);A2=MAX(A$2:A$7)));MAX($A$2:$A$7)/(SOMMEPROD(($A$2:$A$7=0)*($B$2:$B$7<>0))+1);A2)
    à tirer vers le bas jusqu'en C7
    1. merci patrice, mais ça concerne quelle condition ??
    2. ça répond à ton exemple ci-dessus
    3. @Patrice33740merci . tas vraiment assuré . cest cette partie là qui me derangeait le plus.
      maintenant je veux delimiter ce traitement
      sur une étape caracterisé par une autre colonne DATE. en gros je veux que ce traitement se fasses jour par jour . merci bcp
  4. Re,

    J'ai dédoublé ton tableau avec 2 dates en plus :

    Avec les valeurs de C en colonne A (A2 à A13) et celles de V en colonne B (B2 à B13) et la date en colonne C :

    Formule en D2 :
    =SI(ET(MAX(($C$2:$C$13=C2)*$A$2:$A$13)>1000;OU(ET(A2=0;B2<>0);A2=MAX(($C$2:$C$13=C2)*$A$2:$A$13)));MAX(($C$2:$C$13=C2)*$A$2:$A$13)/(SOMMEPROD(($A$2:$A$13=0)*($B$2:$B$13<>0))+1);A2)
    Attention : à valider par Maj+Ctrl+Entrée puis à tirer vers bas
    Cordialement
    Patrice
    1. merci bcp, mais là ça marche pas , ça me fait faux :s:s