Extraire des records d'une base de données

Bonjour à tous,

Je me suis lancé dans la création d'une base de donnée dans un discipline de sport automobile et j'aimerais extraire les records de cette base de donnée. Etant novice, je suis maintenant coincé.

Dans le fichier ci-joint vous pouvez voir deux feuilles : "Database pilotes" qui est donc ma base de données avec toutes les informations nécessaires et "Records pilotes" que je voudrais automatiser.

Dans cette dernière feuille, je voudrais ressortir les dix pilotes avec le plus de courses, les dix pilotes avec le plus de victoires, de podiums, de poles et de best laps. Dans le fichier ici attaché, j'ai fait un simple copier coller des informations que j'ai en triant mes données de la feuille "Database pilotes". Mais est ce que ceci peut devenir automatique ou alors avoir un bouton qui me trie tout comme je le souhaite ?

Merci d'avance de votre aide,

Ayrton

Bonjour,

Ta vie serait grandement plus facile ... avec un Tableau Croisé Dynamique ...

Un très grand merci !

J'ai malheureusement du fusionner les colonnes noms et prénoms dans ma base de données sinon les résultats étaient erronés. Petite question, le Tableau Croisé Dynamique se mettra-t-il à jour automatquement quand je modifierai des valeurs ? Je vais aussi essayer de mettre plusieurs TCD sur la même feuille excel parce que je devrai les imprimer et m'en servir en ayant toutes les infos que je souhaite sur une feuille A4. J'essaie de trifouiller et je rviens vers vous si j'ai quelconque souci.

Merci encore

Bonsoir Ayrtonlem, JAMES007, le forum

Ou tout simplement avec une macro de tri :

Option Explicit
Sub test()
Dim x, col As Byte, r As Range
    With Sheets("Database pilotes").Range("A1").CurrentRegion
        For col = 3 To 7
            x = Application.Index(.Value, Evaluate("row(2:" & _
                                                   .Rows.Count & ")"), Array(1, 2, col))

            mySort x, LBound(x, 1), UBound(x, 1), 3
            Set r = Sheets("Records pilotes ").Cells.Find(.Cells(1, col).Value, lookat:=xlWhole)
            If Not r Is Nothing Then
                r.Offset(1, -2).Resize(10, 3) = x
            End If
        Next
    End With
End Sub

Private Sub mySort(a, LB As Long, UB As Long, ref As Long)
    Dim i As Long, ii As Long, iii As Long, temp
    For i = LB To UB - 1
        For ii = i + 1 To UB
            If a(i, ref) < a(ii, ref) Then
                For iii = LBound(a, 2) To UBound(a, 2)
                    temp = a(i, iii): a(i, iii) = a(ii, iii): a(ii, iii) = temp
                Next
            End If
        Next
    Next
End Sub

klin89

Merci beaucoup, j'ai maintenant deux solutions qui fonctionnent, je ne sais pas la quelle je vais utiliser du coup !

Rechercher des sujets similaires à "extraire records base donnees"