on ne garde que les meilleurs valeurs ( Resolu )

fifi56

XLDnaute Junior
bonjour et bonnee annee a tous et toutes

dans un tableau je cherche a ne garder que 1 note en fonction d'une autre colonne

( oui je sais ce 'n'est pas tres clair comme mon cerveau ce soir )

ci joint un petit fichier il va expliquer mieux que moi

merci de votre aide
 

Pièces jointes

  • note (3).xlsm
    9.8 KB · Affichages: 25
  • note (3).xlsm
    9.8 KB · Affichages: 27
  • note (3).xlsm
    9.8 KB · Affichages: 27
Dernière édition:

klin89

XLDnaute Accro
Re : on ne garde que les meilleurs valeurs

Bonsoir JHA, fifi56

Une solution Vba, résultat en Feuil2 :
VB:
Sub Maxi()
Dim a, i As Long, e, n As Long
    a = Sheets("Feuil1").Range("B3").CurrentRegion.Value
    a(1, 1) = "Noms": a(1, 2) = "Notes"
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1: n = 1
        For i = 2 To UBound(a, 1)
            If a(i, 2) <> "" Then
                If Not .exists(a(i, 2)) Then
                    Set .Item(a(i, 2)) = _
                    CreateObject("System.Collections.SortedList")
                End If
                .Item(a(i, 2))(a(i, 1)) = a(i, 3)
            End If
        Next
        For Each e In .keys
            n = n + 1: a(n, 1) = e
            a(n, 2) = .Item(e).GetByIndex(.Item(e).Count - 1)
            a(n, 3) = .Item(e).GetKey(.Item(e).Count - 1)
        Next
    End With
    With Sheets("Feuil2").Cells(1)
        .CurrentRegion.Clear
        With .Resize(n, 2)
            .Value = a
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Borders.Weight = 2
        End With
        .Resize(, 2).Interior.ColorIndex = 19
        .Parent.Select
    End With
End Sub
Edit: je regarde la solution de JHA, sûrement plus judicieux avec des formules.
Klin89
 

fifi56

XLDnaute Junior
Re : on ne garde que les meilleurs valeurs

merci de vos réponses , j'avoue que je préférais dans la mesure du possible éviter le vba


la solution de jha ne convient pas, celle de klin89 fonctionne mais vba


car c'est bien le coef du controle qui donne la note a prendre en compte et non pas la note max de l'eleve a prendre
( je vous ais induit en erreur avec mon 1 er fichier je m'en excuse , les nouvelles valeurs du fichiers sont plus parlante ! )
 
Dernière édition:

JHA

XLDnaute Barbatruc
Re : on ne garde que les meilleurs valeurs

Re,

Avec decaler,
Code:
=DECALER($B$3;MAX(SI(($C$4:$C$12=$K4);LIGNE($B$4:$B$12)-3));2)
ou avec index
Code:
=INDEX($D$4:$D$12;MAX(SI(($C$4:$C$12=$K4);LIGNE($B$4:$B$12)-3);0))

Toujours en matricielle Ctrl+Maj+Entrée

JHA
 

Pièces jointes

  • note (3).xlsm
    10.5 KB · Affichages: 17
  • note (3).xlsm
    10.5 KB · Affichages: 25
  • note (3).xlsm
    10.5 KB · Affichages: 27
Dernière édition:

fifi56

XLDnaute Junior
Re : on ne garde que les meilleurs valeurs

:( la solution décaler ne fonctionne pas non plus , il suffit de changer la valeurs du coef controle en l'augmentant pour le premier contrôle de julie par exemple ...

mais merci tt de meme d'avoir essayer !

je vais a defaut utiliser vba
 

Discussions similaires

Statistiques des forums

Discussions
312 381
Messages
2 087 818
Membres
103 666
dernier inscrit
gjoanou