Extraction d'une grosse base de données

Bonjour à tous,

J'aimerais une formule (ou autre) qui me permette d'extraire sous certaines conditions des infos d'une grosse base de données.

L'exemple ci-joint devrait être assez explicite.

J'aimerais extraire pour une année donnée, pour un item donné, le résultat du dernier test ayant eu lieu l'année considérée.

Merci d'avance pour votre aide.

Prenez soin de vous ... et des autres.

Bonne journée,

Vbabeginner

Bonjour,

=INDEX($D$6:$D$15;MAX(SI(($B$6:$B$15=D23)*($C$6:$C$15=$E$20);LIGNE($D$6:$D$15)-LIGNE($D$5))))

en matriciel

Salut Steelson,

C'est ce que je désirais ! Tu penses que tu pourrais aussi la colonne " Items" dans le tableau résultat avec une formule ? (Là à la limite je peux m'en tirer en chipotant un peu je pense mais sait on jamais.)

Un tout tout grand merci !

Bonne journée,

Vbabeginner

Bonjour à tous

Sur une "grosse base de données" le matriciel risque de ramer.

As-tu la possibilité d'installer l'add on PowerQuery (intégré à Excel à partir de 2016)

Tu penses que tu pourrais aussi la colonne " Items" dans le tableau résultat avec une formule ?

Je n'ai pas pigé !

Sur une grosse base de données, Chris a raison. Il y a PowerQuery. Ou bien, si tu veux le résultat sur tous les items et que ceux-ci sont nombreux, il faudra passer par un TCD et/ou une macro, voire ajouter aussi un indicateur de ligne. Bref différentes solutions.

Une remarque sur ma solution, je prends le max sur la ligne, il faut donc qu'elle soit triée sur les dates (après les items et l'année si besoin).

En attendant PowerQ, voici une solution hyper rapide sur une grosse BdD

Sub der()
Dim tbl, dico As Object, dicostatut As Object

    tbl = [tableau1].Value
    Set dico = CreateObject("Scripting.Dictionary")
    Set dicostatut = CreateObject("Scripting.Dictionary")
    For a = LBound(tbl) To UBound(tbl)
        If dico.Exists(tbl(a, 1) & "|" & tbl(a, 2)) Then
            If dico(tbl(a, 1) & "|" & tbl(a, 2)) < tbl(a, 3) Then
                dico(tbl(a, 1) & "|" & tbl(a, 2)) = tbl(a, 3)
                dicostatut(tbl(a, 1) & "|" & tbl(a, 2)) = tbl(a, 4)
            End If
        Else
            dico(tbl(a, 1) & "|" & tbl(a, 2)) = tbl(a, 3)
            dicostatut(tbl(a, 1) & "|" & tbl(a, 2)) = tbl(a, 4)
        End If
    Next a

    ' début du résultat
    ligne = 17: colonne = 7

    For Each cle In dico
        Cells(ligne, colonne) = Split(cle, "|")(0)
        Cells(ligne, colonne + 1) = Split(cle, "|")(1)
        Cells(ligne, colonne + 2) = dico(cle)
        Cells(ligne, colonne + 3) = dicostatut(cle)
        ligne = ligne + 1
    Next

End Sub

Bonjour,

Une proposition Power Query (Filtre) avec un soupçon de VBA pour actualiser les résultats.

Cdlt.

BOnjour à tous,

@ Steelson : je disais juste que tu utilisais les items " A", "B", ... du tableau résultat dans tes formules. Or j'aurais aimé que ceux-là aussi soient déterminés par formule. En gros la 1ère colonne de mon tableau résultat n'est pas une donnée mais à trouver aussi.

Je vais creuser ta soultion VBA sur le fichier réel et je reviens vers toi demain pour te donner le résultat.

@ 78Chris : oui j'ai la possibilité de passer par Power Query mais je n'y connais pas grand chose. Je pense que c'est une bonne opportunité de découvrir cet outil dont j'entends de plus en plus parler.

@ Jean-Eric : Merci pour la solution, je vais essayer de la mettre en application sur mon fichier réel dès demain et je te tiens informé du résultat.

En tout cas un très grand merci à vous pour ces différents options que vous m'offrez !

Bonne soirée,

Vbabeginner.

@ Steelson : je disais juste que tu utilisais les items " A", "B", ... du tableau résultat dans tes formules.

Je m'étais basé sur cette demande

J'aimerais extraire pour une année donnée, pour un item donné, le résultat du dernier test ayant eu lieu l'année considérée.

Néanmoins dans le code VBA je ne pars pas a priori d'un item, ni d'une année, je te donne tous les derniers statuts pour tous les items. C'est donc plutôt une solution intéressante (au même titre donc que PowerQ). Tu peux ensuite filtrer sur l'année, trier etc...

Bonjour,

@ Steelson : Tu as raison : désolé ! J'aurais dû écrire "par item" et pas "pour un item donné" ! En tout cas je peux déjà te confirmer que ta solution VBA fonctionne du tonnerre sur la table réelle et le résultat est très rapide ! Merci beaucoup !!

@ Jean-Eric : En collant les data dans le tableau data tout fonctionne très bien avec la version Power Query également ! Je vais avoir besoin de ( beaucoup) de temps pour comprendre la solution parce que je n'y connais rien mais je vais vraiment faire l'exerice pour essayer d'apprendre un peu et de construire chacune des différentes étapes et arriver au résultat final.

Je vous remercie tout les 2 pour les deux différentes solutions rapides !

Prenez soin de vous ... et des autres

Bon weekend

Vbabeginner

Bonjour,

Merci de ce retour.

Cdlt.

Rechercher des sujets similaires à "extraction grosse base donnees"