Regrouper en Colonne les valeur ayant un attribut similaire

0

bonjour 

j'ai un tableaux de 3 colonnes Attribut /code valeur /valeur

UN ATTRIBUT PEU AVOIR DIFFÉRENTE VALEUR 

JE SOUHAITE CRÉE UN TABLEAUX QUI REGROUPE LES VALEUR QUI ON UN ATTRIBUT IDENTIQUE DANS UNE MEME COLONNE 


CI DESSOUS UN LIENS AVEC DEUX CLASSEUR 

lA base et le resultat voulu 


http://www.cjoint.com/c/GKglZ6164Fc


    Posté le 6 novembre 2017, 12:59
    par xam26
    Répondre
    -1

    Bonjour,
    Je t'ai fait 2 classeurs :
    1 version complète de tout tes articles : attention l'ouverture peut demander beaucoup de temps

    http://www.cjoint.com/c/GKgqF0EjbNT

    et une version courte :

    http://www.cjoint.com/c/GKgqHxUbe5T

    tu me diras ce que tu préfères

    Il faudra tirer la formule pour voir + d'article dans a liste (paramétrer pour une 20 aine)

    Dis moi si cela te convient.

    Cordialement,

    Tom

    Tom Posté le 6 novembre 2017, 17:34
    par Tom
    1

    Bonsoir xam26 et Tom

    Bravo Tom pour ta formule.

    Je me suis permis d'apporter 2 petites améliorations :

    1 la formule calcule 2 fois juste pour éviter les 0 quand on arrive aux lignes vides.  

    En procédant ainsi on évite de calculer 2 fois la formule qui est lourde comme toutes les formules matricielles et comme il y a 35.000 lignes... cela compte

    =(INDEX(BASE!$C:$C;MIN(SI(cond=A$1;SI(NB.SI(A$1:A1;valeur)=0;LIGNE(valeur);LIGNES(valeur)+LIGNE(valeur)))))&"")

    Les résultats sont calibrés pour accueillir 60 lignes (+1 ligne de titre)

    Attention : le temps de réaction est relativement long : on peut consulter dans le bas du tableau à droite le % d'exécution.

    2 j'ai mis le même genre de formule dans l'onglet Donnée ainsi le tableur se met à jour automatiquement si on complète l'onglet Base (j'ai prévu un maximum de 35.000 lignes si plus nécessaire, il faudra revoir les formules et les noms de plages.

    http://www.cjoint.com/c/GKiap0mXilJ

    A+

    Chris

    CHRIS Posté le 8 novembre 2017, 01:29
    par CHRIS
    1

    Bonjour à tous les deux

    La lenteur du tableur me turlupinait aussi j'ai tenté d'utiliser une autre manière de traiter le sujet.

    Cette façon de faire a fortement augmenté la réactivité du tableur en éliminant les formules matricielles.

    C'est un peu plus compliqué à mettre en place mais beaucoup plus rapide à l'exécution.

    La technique repose sur l'insertion de 3 colonnes "techniques" en regard des lignes de l'onglet BASE.  Ces colonnes vont tester :

    1 colonne Q enlever les doublons de la colonne ATTRIBUT pour consituer une liste des ATTRIBUTS sans doulon

    2 colonne R va tester si les lignes correspondent à l'Attribut demandé tout en enlevant les doublons des valeurs et cela grâce à la colonne S.

    Il y a quelques explications dans le classeur

    Si plus d'explications nécessaires, n'hésitez pas à me revenir.Voici le classeur :

    http://www.cjoint.com/c/GKimGDKa4vJ

    Bonne continuation

    Chris


    CHRIS Posté le 8 novembre 2017, 13:44
    par CHRIS
    • Chris, Chapeau :) ! le temps de latence est nettement diminué. Belle invention et logique. ça fait quoi la fonction ESTNA ? – Tom 9 novembre 2017, 19:18
    0

    Bonsoir Tom,

    Merci pour l'appréciation.  

    En fait j'utilisais cette technique bien avant de connaître les formules matricielles.

    Elle permet, en multipliant les colonnes techniques, de pratiquement tout paramétrer pour tester une base de données et en extraire les lignes désirées.

    Je l'ai mise au point pour résoudre un défi particulièrement complexe où un dirigeant m'avait demandé de pouvoir analyser son signalétique articles (+- 9.000 articles) en tenant compte de multiples critères tels que Type d'activités ; Familles produits ; Fournisseurs ; chiffres d'affaires etc...  J'ai pu réaliser la chose en créant une série de colonnes techniques qui adaptait le tableau d'analyse en fonction des critères demandés par l'utilisateur.

    Quand j'ai appris les formules matricielles, je me suis dit que ma technique était à mettre à la poubelle ou en tous cas au musée.  

    Toutefois quand des cas de volumes importants m'ont été soumis, je me suis aperçu que les formules matricielles demandaient un temps fou à Excel et que, finalement, ma procédure, au premier abord lourde à mettre en place en utilisant des colonnes techniques (surtout qu'au départ - je te parle d'il y a déjà une dizaine d'années - je ne maîtrisais pas encore la technique de la recherche par INDEX et EQUIV.  J'utilisais à l'époque uniquement la RECHERCHEV ce qui m'obligeait à mettre les colonnes techniques devant les colonnes des tableaux) était, finalement, beaucoup plus économique en temps d'exécution. 

    C'est tout à fait le cas dans le tableau de xam26.

    Pour répondre à ta demande, la fonction ESTNA sert à tester si la fonction qu'elle teste donne comme réponse le vilain #NA.  Elle répond par FAUX ou VRAI  en fonction que l'opération réussit ou pas.  Dans notre cas : 

    SI(ESTNA(RECHERCHEV($A3;$A$1:$A2;1;FAUX))=VRAI;1;0)

    Le but de la formule est d'ajouter 1 ou 0 au total de la ligne précédente si la RECHERCHEV ne trouve pas A$3 dans la plage (il s'agit d'éliminer les doublons donc la formule teste la plage évolutive se trouvant au-dessus de la cellule testée ($A$1:$A2 - pas $ devant le 2 donc à chaque ligne l'adresse de la plage augmente de 1)..  

    Si la recherche ne trouve pas, elle génère un #NA et la fonction ESTNA va détecter cet #NA et générer VRAI donc j'augmente de 1.  Si elle trouve (donc il y a au moins doublon), elle va générer FAUX et donc on augmente de 0.

    CQFD....

    J'espère que j'ai été clair.

    A bientôt

    Chris

    CHRIS Posté le 10 novembre 2017, 01:18
    par CHRIS
    0

    merci pour l'info Chris ! ton niveau en excel est impressionnant :).

    bonne journée.

    Tom

    Tom Posté le 10 novembre 2017, 09:57
    par Tom

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :