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

Conception Discussion :

Rechercher une valeur unique selon un critère présent plusieurs fois [XL-2013]


Sujet :

Conception

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Rechercher une valeur unique selon un critère présent plusieurs fois
    Bonjour,

    Malgré de multiples recherches et une belle prise de tête depuis quelques jours, je ne parvient pas à résoudre mon problème.
    J'ai une liste de machines où sont effectués régulièrement des contrôles standards et spécifiques.
    Pour chaque machine, j'ai besoin de connaître la date du dernier contrôle et si un contrôle spécifique a été réalisé par le passé.
    Si j'ai bien réussi à retrouver la dernière date du contrôle par une fonction matricielle, je tourne en rond pour identifier les machines qui ont eu un contrôle spécifique. J'ai utilisé les fonctions équiv et index sans résultat.
    Je vous joins un petit fichier d'exemple qui sera peut-être plus clair que mon explication.
    J'ai également remarqué qu'à chaque modification le temps de calcul était très long (fichier > 15000 lignes). Est-il possible d'optimiser cette fonction matricielle ?
    Vous remerciant par avance de votre aide
    Bien à vous
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 73
    Points : 92
    Points
    92
    Par défaut
    Bonsoir,

    A tester,si dispo dans ta version d'Excel.
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX.SI.ENS($C$4:$C$14;$A$4:$A$14;E4;$B$4:$B$14;F4)
    Cordialement.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bonsoir,

    Je n'ai malheureusement qu'une pauvre version 2013... Pas de 2016 ou de 365.
    Fonction pas dispo.
    Merci toutefois de ton retour rapide
    Cordialement

  4. #4
    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
    Citation Envoyé par jlv25 Voir le message
    J'ai également remarqué qu'à chaque modification le temps de calcul était très long (fichier > 15000 lignes). Est-il possible d'optimiser cette fonction matricielle ?
    Vous remerciant par avance de votre aide)
    Une optimisation du temps de travail peut s'obtenir en évitant d'écrire des formules faisant intervenir des colonnes entières (A:A ou C:C).
    Pour cela on peut dans la version 2013 déclarer la plage A3:C14 comme un tableau structuré que j'ai nommé Table pour la suite.
    La formule matricielle en G4 peut alors s'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(SI(Table[Code machine]=E4;Table[Date des contrôles]))
    Il vaut mieux travailler sur 15000 lignes que sur plus d'un million.
    Si ma mémoire ne me fait pas défaut, il me semble que la fonction NB.SI.ENS est définie dans la version 2013; dans ce cas, on peut écrire en F4 la formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NB.SI.ENS(Table[Code machine];E4;Table[Type de contrôle];"Spécifique");"Spécifique";"")
    Si cette fonction n'est pas définie, il faut passer par un SOMMEPROD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(SOMMEPROD((Table[Code machine]=E4)*(Table[Type de contrôle]="Spécifique"));"Spécifique";"")
    Cordialement
    Claude

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bonsoir Claude,

    Bon Dieu, mais c'est bien sûr !

    Tu as tout juste sur toute la ligne.
    J'ai découvert un des bienfaits du tableau structuré qui allège sensiblement les temps de calcul. Une pratique qui gagne vraiment à être connue, sur tous les tableaux... !

    Coté fonctions, tout fonctionne parfaitement. Je connaissais pourtant cette fonction NB.SI.ENS pour l'avoir utilisé dernièrement !

    Merci beaucoup de ton aide précieuse et de la pertinence de ta réponse.

    Bien Cordialement
    Jean-Luc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Rechercher une valeur selon un onglet et un critère
    Par bison00769 dans le forum Conception
    Réponses: 4
    Dernier message: 12/03/2019, 15h43
  2. Réponses: 8
    Dernier message: 15/01/2019, 10h57
  3. Réponses: 3
    Dernier message: 14/11/2016, 15h14
  4. codage vba pour rechercher une valeur selon 2 critères
    Par sims92.66 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2011, 21h29
  5. Réponses: 3
    Dernier message: 05/02/2010, 03h45

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