Macro sélection de valeur selon 2 conditions

Sandrine123

XLDnaute Nouveau
Bonjour,

Je sollicite votre aide pour une macro Excel.

J'ai un tableau de 28 colonnes (seules 2 colonnes nous intéresse => B et X) :

En colonne B, nous avons des numéros de dossiers. Chaque dossier est doublé.
En colonne X, nous avons une valeur numérique pour chaque dossier.

Le but de la macro serait de créer un nouvel onglet qui reprend le numéro de dossier et qui lui affecte sa valeur correspondante selon les conditions suivantes :

- Si la valeur du premier dossier est supérieure à 100, et que la moyenne entre les 2 valeurs ne dépasse pas 10% d'écart, on écrit la moyenne des deux sinon on supprime le dossier.

- Si la valeur du premier dossier est inférieure à 100, on calcule l'écart entre les 2 valeurs, si l'écart est supérieur à 10 on le supprime, si l'écart est inférieur ou égal à 10, on garde la première valeur.


J'ai créé un onglet avec le résultat à obtenir et les explications, ce sera plus clair.

Merci d'avance de votre aide.

Bonne journée.
 

Pièces jointes

  • TEST_1.xlsm
    11.4 KB · Affichages: 30
  • TEST_1.xlsm
    11.4 KB · Affichages: 31

job75

XLDnaute Barbatruc
Re : Macro sélection de valeur selon 2 conditions

Bonjour Sandrine123,

A priori une macro n'est pas nécessaire, formule en B2 de la feuille "Résultat" :

Code:
=SI(INDEX(Feuil1!X:X;2*(LIGNE()-1))>=100;SI(ABS(INDEX(Feuil1!X:X;2*(LIGNE()-1))-INDEX(Feuil1!X:X;1+2*(LIGNE()-1)))<=10%*(INDEX(Feuil1!X:X;2*(LIGNE()-1))+INDEX(Feuil1!X:X;1+2*(LIGNE()-1)));(INDEX(Feuil1!X:X;2*(LIGNE()-1))+INDEX(Feuil1!X:X;1+2*(LIGNE()-1)))/2;"S");SI(ABS(INDEX(Feuil1!X:X;2*(LIGNE()-1))-INDEX(Feuil1!X:X;1+2*(LIGNE()-1)))<=10;MAX(INDEX(Feuil1!X:X;2*(LIGNE()-1));INDEX(Feuil1!X:X;1+2*(LIGNE()-1)));"S"))
On crée une MFC en colonne A pour barrer les dossiers avec valeur "S".

On peut aussi masquer les lignes par filtrage des "S" sur la colonne B.

Fichier .xlsx joint.

Edit : en toute logique c'est la moyenne qui doit être >= 100 :

Code:
=SI((INDEX(Feuil1!X:X;2*(LIGNE()-1))+INDEX(Feuil1!X:X;1+2*(LIGNE()-1)))/2>=100;...
On pourrait aussi prendre le minimum :

Code:
=SI(MIN(INDEX(Feuil1!X:X;2*(LIGNE()-1));INDEX(Feuil1!X:X;1+2*(LIGNE()-1)))>=100;...

A+
 

Pièces jointes

  • TEST(1).xlsx
    19 KB · Affichages: 30
  • TEST(1).xlsx
    19 KB · Affichages: 32
Dernière édition:

job75

XLDnaute Barbatruc
Re : Macro sélection de valeur selon 2 conditions

Bonjour Sandrine123,

Avec les noms définis valeur1 valeur2 moyenne la formule en B2 est plus simple :

Code:
=SI(moyenne>=100;SI(ABS(valeur1-valeur2)/2<=10%*moyenne;moyenne;"S");SI(ABS(valeur1-valeur2)<=10;MAX(valeur1;valeur2);"S"))
Fichier (2).

Bonne journée.
 

Pièces jointes

  • TEST(2).xlsx
    19.5 KB · Affichages: 34
  • TEST(2).xlsx
    19.5 KB · Affichages: 32

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 612
Messages
2 090 227
Membres
104 453
dernier inscrit
benjiii88