Récapitulative de différentes feuilles sans doublons

Tager

XLDnaute Nouveau
Bonjour à tous,

Je suis en train de traiter des feuilles excel avec énormément de données.

Voici mon problème.
1) J'aimerais pouvoir faire un récapitulatif de tous les participants depuis le début et les éditions a venir. En colonne B de chaque feuil il y a le numéro de dossard en colonne C de chaque feuille il y a les nom et prénom en colonne F le temps effectuée en colonne G des points attribuer en fonction de la performance. Ce que je souhaite c'est juste regrouper toutes les colonnes B, C, D, E et sans doublons de manière automatique

2) La feuille "Recap" doit contenir en colonnes "B, C, D, E" sans doublons toutes les colonnes "B, C, D, E" de toutes les autres feuilles. Ensuite, la feuille "Recap" doit pouvoir regrouper toutes les colonnes "F & G" des autres feuilles les unes à côtés des autres a partir des colonnes "H & I". Pour préciser dans la feuille "Recap" je dois avoir en "H & I" les colonnes "F & G" de la Feuil "Résultats AL-1" , puis en "J & K" les colonnes de la Feuil "Résultats AL-2"" "F & G" et encore en "L & M" les colonnes de la Feuil "Résultats AL-3" "F & G" et ainsi de suite.
Je pense qu'une solution par VBA pourrait résoudre ce problème!!!

Une âme bienveillante aurait quelques idées ?
 

Pièces jointes

  • AL-General.xls
    1.2 MB · Affichages: 32

klin89

XLDnaute Accro
Bonsoir à tous, :)

Toujours avec un dictionnaire ;)

L'item associé à la clé est un tableau à 1 dimension de 23 valeurs, les indices vont de 0 à 22
Ce tableau représente la ligne restituée en feuille "Recap" pour chaque participant

Précision :
L'ordre des feuilles parcourues doit correspondre à l'ordre des en-têtes figurant en feuille "Recap"
VB:
Option Explicit
Sub test()
Dim a, w(), col As Byte, txt As String, i As Long, dico As Object, ws As Worksheet
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    col = 5
    Application.ScreenUpdating = False
    For Each ws In Worksheets
        If ws.Name Like "Résultats*" Then
            a = ws.Range("a1").CurrentRegion.Value
            col = col + 2
            For i = 4 To UBound(a, 1)
                txt = Join$(Array(a(i, 3), a(i, 4), a(i, 5)), Chr(2))
                If Not dico.exists(txt) Then
                    dico.Item(txt) = _
                    VBA.Array(Empty, "N° xx", a(i, 3), a(i, 4), a(i, 5), _
                              Empty, Empty, Empty, Empty, Empty, Empty, _
                              Empty, Empty, Empty, Empty, Empty, Empty, _
                              Empty, Empty, Empty, Empty, Empty, Empty)
                End If
                w = dico.Item(txt)
                w(5) = w(5) + 1
                If IsNumeric(a(i, 7)) Then w(6) = w(6) + a(i, 7)
                w(col) = a(i, 6): w(col + 1) = a(i, 7)
                dico.Item(txt) = w
            Next
        End If
    Next ws
    With Sheets("Recap").Range("a1").CurrentRegion
        With .Offset(2)
            .ClearContents
            If dico.Count > 0 Then
                .Resize(dico.Count) = Application.Transpose(Application.Transpose(dico.items()))
            End If
        End With
    End With
    Set dico = Nothing
    Application.ScreenUpdating = True
End Sub
klin89
 
Dernière édition:

Tager

XLDnaute Nouveau
Bonjour à tous,
Je vous remercie pour les différentes solutions, ma préférence irait vers le second test de pierrejean.

Pourrez ont imaginer le même résultat avec des noms d'ongles différents?

Serait il possible d'identifier visuellement (couleur de police) le meilleur résultat par catégorie (exemple rose pour la CAT "F", bleu pour "S" etc..Et de l'introduire dans la macro?

Tager
 

Pièces jointes

  • AL-General-bis.xls
    1.5 MB · Affichages: 20

Tager

XLDnaute Nouveau
merci pour la réponse,
Que voulez vous dire par : "ne pas modifier les noms des autres feuilles ni en ajouter d'autres que de résultats" dans le futur le fichier pourrait contenir environ 50 ongles avec des noms différents (+/- une par semaine). Le format sera toujours identique même nombre de colonnes et même intitulés.

J'ai mentionner "introduire dans la macro" qui je pense être dans votre langage... écrire un cote vba dans n module.

Tager
 

pierrejean

XLDnaute Barbatruc
Je m'explique:

Pour la macro les onglets a traiter sont ceux qui ne sont pas "Classements Genéral" "Calendrier & Participants" "Feuil1" "Recap" quels que soit leurs nombre ou leurs nom
Il faut donc ne pas modifier ces noms ("Classements Genéral" "Calendrier & Participants" "Feuil1" "Recap")
Il ne faut pas non plus ajouter un onglet qui ne soit pas à traiter (la macro essaierait et il y aurait un Bug)
Est-ce clair ?

Faut-il chercher pour chaque catégorie le meilleur total de points ou la meilleure moyenne (c'est à dire le meilleur ratio: nombre de points / nombre de courses) ??
 

Tager

XLDnaute Nouveau
c'est beaucoup plus claire pour moi maintenant.
Pour le second point je m"explique: faire un tri sur la colonne "Total des points" du plus grand vers le plus petit afin d'établir un classement général, ensuite agrémenté la colonne " classement" de 1 à ...1000, ensuite j'aimerais mettre en surbrillance la ligne (couleur façon "Mise en forme conditionnelle") le premiers de chaque catégorie(le nombre de points).


Tager
 

Tager

XLDnaute Nouveau
Bonjour klin89,
Je reçois les résultats dans une feuille excel qui elle vient d'un programme externe du style Intranet, à priori le numéro de dossard est alloué pour une année, en ce qui concerne le champ "Catégorie" oui 2 colonnes son superflus, j'encode manuellement la première colonne avec les valeurs de la seconde.
voilà j'espère avoir été claire.
Tager
 

pierrejean

XLDnaute Barbatruc
Re

Cette version à tester
1) Récupère la catégorie dans l'une et l'autre colonne
2) Classe selon le nombre total de points
3) Ecrit le classement en colonne A

pour colorer le meilleur dans chaque catégorie , je regarderais quand j'aurais un peu de temps
 

Pièces jointes

  • AL-General-bis.xls
    1.2 MB · Affichages: 16

Discussions similaires

Réponses
20
Affichages
299

Statistiques des forums

Discussions
312 671
Messages
2 090 761
Membres
104 656
dernier inscrit
DAM2B42