IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Un genre de formule avec Sommeprod & recherche de valeur la plus proche


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Points : 57
    Points
    57
    Par défaut Un genre de formule avec Sommeprod & recherche de valeur la plus proche
    Bonjour à tous,

    Je bloque dessus et je préviens que c’est un véritable casse-tête que je n’arrive pas à résoudre.

    Condition à respecter : en A2: « 2500 ». J’ai une date en G2 « 15/05/2020 », et en O2 « put ».

    Puis en colonne H (de H2 :H3000) j’ai une multitude de date (par exemple 225 fois la date « 15/05/2020 » ; 300 fois la date 01/12/2021 ; etc…) ; en colonne K (de K2 :K3000) il y a soit « put » ou « call » ; et en colonne J (de J2 :J3000) il y a des chiffres (aléatoire) de 1 à 5000 ; et enfin un intitulé en colonne N (de N2:N3000).

    Comment faire pour avoir une formule qui me permet de rechercher dans la colonne J la valeur qui soit la plus proche de la valeur en A2 (2500), tout est respectant que la valeur sélectionnée (dans la colonne J) ait i/sur la même ligne en colonne H « 15/05/2020 » (égal à G2) et ii/« put » sur la même ligne en colonne K (égal à O2) ; pour infine avoir son intitulé présent en colonne N.

    Je me suis vraiment creusé la tête et je me suis tourner vers une formule avec Sommeprod du type :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(A2=J2:J3000)*(G2=H2:H3000)*(O2=K2:K3500)*(N2 :N3500)

    Mais...ça ne marche pas car il est possible qu'en colonne J il n'y ai pas de "2500" d'où la nécessité de chercher absolument la valeur la plus proche.

    Merci beaucoup pour votre aide
    Fabien

  2. #2
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    La valeur la plus proche de la valeur en $A$2 peut s'obtenir avec la formule matricielle :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX($J$2:$J$3000;EQUIV(MIN(ABS($J$2:$J$3000*($H$2:$H$3000=$G$2)*($K$2:$K$3000=$O$2)-$A$2));ABS($J$2:$J$3000*($H$2:$H$3000=$G$2)*($K$2:$K$3000=$O$2)-$A$2);0))
    à valider par Ctrl + Maj + Entrée
    L'intitulé correspondant s'obtient avec la formule matricielle :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX($N$2:$N$3000;EQUIV(MIN(ABS($J$2:$J$3000*($H$2:$H$3000=$G$2)*($K$2:$K$3000=$O$2)-$A$2));ABS($J$2:$J$3000*($H$2:$H$3000=$G$2)*($K$2:$K$3000=$O$2)-$A$2);0))
    à valider toujours par Ctrl + Maj + Entrée.
    Cordialement
    Claude

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    La solution la plus simple serait de faire une colonne de calculs intermédiaire.

    En supposant que ta colonne Z est vide, mettre en Z2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(H2=G$2;K2=O$2);ABS(J2-A2);"")
    Copier Z2 en Z2:Z3000.

    Ensuite, il suffit d'une combinaison de INDEX, EQUIV et MIN pour avoir ton résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(N2:N3000;EQUIV(Z2:Z3000;MIN(Z2:Z3000);0)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre régulier
    Profil pro
    Consultant finance
    Inscrit en
    Mars 2009
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 165
    Points : 75
    Points
    75
    Par défaut
    Bonjour,
    Je relance ce post, car j'ai l'impression qu'il est assez proche de ma demande.
    Je voudrais trouver la valeur la plus proche mais avec des critères/plages comme dans SOMME.SI.ENS
    Merci beaucoup pour votre aide.

  5. #5
    Membre éprouvé
    Homme Profil pro
    utilisateur
    Inscrit en
    Janvier 2017
    Messages
    669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : utilisateur
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 669
    Points : 1 109
    Points
    1 109
    Par défaut
    Bonjour fabien32200, jpg75014, le forum

    Je ne sais pas si SOMMEPROD() fonctionne correctement sur des zones qui ne sont pas uniformément similaires, de la ligne 2 à la ligne 3000, vous allez parfois dans votre formule jusqu'à la ligne 3500...

    Essayez en corrigeant par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(A2=J2:J3000)*(G2=H2:H3000)*(O2=K2:K3000)*(N2:N3000)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(A2=J2:J3500)*(G2=H2:H3500)*(O2=K2:K3500)*(N2:N3500)
    sinon testez la formule ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("N"&EQUIV(MIN(MIN.SI(J2:J3000;J2:J3000;">="&A$2;J2:J3000;"<>"&"";H2:H3000;G$2;K2:K3000;O$2);MAX.SI(J2:J3000;J2:J3000;"<="&A2;J2:J3000;"<>"&"";H2:H3000;G$2;K2:K3000;O$2));J1:J3000;0);1)
    LibreOffice 7.5.9.2.M1 (x64) FR-YT 05/12/23
    OS : Windows 11.0

Discussions similaires

  1. [XL-2010] formule avec sommeprod
    Par tiesto08 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 05/03/2017, 19h56
  2. [2007] recherche de valeur la plus proche
    Par jaquo dans le forum Excel
    Réponses: 2
    Dernier message: 16/11/2016, 16h15
  3. Réponses: 3
    Dernier message: 28/01/2015, 16h52
  4. [XL-2007] Formules avec plusieurs plages recherche ?
    Par cedinfo17 dans le forum Excel
    Réponses: 1
    Dernier message: 20/07/2011, 06h04
  5. [XL-2003] Simplifier formule avec sommeprod()
    Par LaPanic dans le forum Excel
    Réponses: 8
    Dernier message: 16/09/2009, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo