Filtrer sans doublons avec la plus grande valeur

28 réponses
Avatar
Apitos
Bonsoir =E0 tous,

Comment pourrais-je avoir un filtre sans doublons avec la valeur la plus gr=
ande de chaque ligne r=E9sultante ?

Merci.

http://cjoint.com/?BEya4AID2D1

10 réponses

1 2 3
Avatar
MichD
Bonjour,

La manière la plus simple,

En supposant que A2:G2 représente l'étendue des colonnes,

Tu ajoutes une colonne dans laquelle tu mets la formule : =Max(A2:G2) que tu recopies sur
l'ensemble des lignes
et tu exécutes un filtre avancé (élaboré) sur la colonne affichant les formules et
n'oubliant pas de cocher la case
à cocher "sans doublon".
Avatar
Apitos
Bonjour Denis,

Le max des valeurs doit être trouvé dans la colonne F et dans G pour un même objet.
Avatar
MichD
Si tu prenais le temps d'expliquer? Est-ce que le max() doit se faire sur chaque ligne ou
sur chaque colonne ?

Comment définis-tu la notion de doublon dans ton application?

Si tu n'es pas explicite dans les commentaires que tu commets sur ta problématique,
il est difficile pour les répondeurs de lire dans tes pensées.
Avatar
Apitos
Une petite illustration :

http://cjoint.com/?BEyrWA1tNi1
Avatar
Apitos
Une petite illustration :

http://cjoint.com/?BEyrWA1tNi1
Avatar
MichD
2 étapes :

A ) Tu fais un filtre avancé sur la colonne A:A en cochant la case à cocher sans doublon.
Le résultat du filtre va donner pour chaque nomenclature de la colonne A:A une
occurrence de chaque item.

B ) Pour obtenir le max() dans chacune des colonnes B et C dans le nouveau tableau,
fais appel à des formules pour compléter le tableau.

Résultat du filtre élaboré : Supposons que la copie du résultat se fait dans la
colonne G1:G6 avec en-tête de colonne en G1

G H
i
Object C
T
BOA =MAX(SI($A$2:$A$8=G2;$B$2:$B$8)) =MAX(SI($A$2:$A$8=G2;$C$2:$C$8))
BOD
DHA
DHD
FA

Tu recopies les formules sur leur colonne respective.

Les 2 formules sont matricielles, elles requièrent comme validation : Ctrl + Maj + Enter
Avatar
Apitos
Bonsoir Denis,

Pourrais-je avoir cette solution avec du code VBA ?

Merci.
Avatar
MichD
Exemple dans ton fichier : http://cjoint.com/?BECnrcT83Ph

Le code contenu dans le fichier :

'------------------------------------------------
Sub test()
Dim Sh As Worksheet, DerLig As Long
Set Sh = Worksheets("Feuil2")

Application.ScreenUpdating = False
With Sh
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterCopy, _
Copytorange:=Sh.Range("G1"), _
Unique:=True
DerLig = .Range("G65536").End(xlUp).Row
End With
With .Range("G1:G" & .Range("G65536").End(xlUp).Row)
.Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes
End With
.Range("H1") = .Range("B1")
.Range("i1") = .Range("C1")
.Range("H1:i1").HorizontalAlignment = xlCenter
.Range("H2").FormulaArray = "=MAX(IF($A$2:$A$8=G2,$B$2:$B$8))"
.Range("H2:H" & DerLig).FillDown
'Pour faire disparaître les formules pour
'obtenir seulement les valeurs si nécessaire
'.Range("H2:H" & DerLig).Value = .Range("H2:H" & DerLig).Value

.Range("i2").FormulaArray = "=MAX(IF($A$2:$A$8=G2,$C$2:$C$8))"
.Range("i2:i" & DerLig).FillDown
'Pour faire disparaître les formules pour
'obtenir seulement les valeurs si nécessaire
'.Range("i2:i" & DerLig).Value = .Range("i2:i" & DerLig).Value

'Application du format %
.Range("H2:I" & DerLig).NumberFormat = "0%"
End With
Application.ScreenUpdating = True
End Sub
'------------------------------------------------
Avatar
Apitos
Bonsoir Denis,

Merci pour le fichier.

Je vais en faire d'autres essaies et voir les résultats.
Avatar
Apitos
Bonsoir Denis,

Voila un autre essai en utilisant les tableaux, en plus d'une colonne B qu' on devra trouver sa valeur la plus grande en dépendant des valeurs de la colonne D et E.

http://cjoint.com/?BEDsT2NrjzN
1 2 3