Filtrer sans doublons avec la plus grande valeur
Le
Apitos

Bonsoir à tous,
Comment pourrais-je avoir un filtre sans doublons avec la valeur la plus gr=
ande de chaque ligne résultante ?
Merci.
http://cjoint.com/?BEya4AID2D1
Comment pourrais-je avoir un filtre sans doublons avec la valeur la plus gr=
ande de chaque ligne résultante ?
Merci.
http://cjoint.com/?BEya4AID2D1
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".
Le max des valeurs doit être trouvé dans la colonne F et dans G pour un même objet.
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.
http://cjoint.com/?BEyrWA1tNi1
http://cjoint.com/?BEyrWA1tNi1
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
Pourrais-je avoir cette solution avec du code VBA ?
Merci.
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
'------------------------------------------------
Merci pour le fichier.
Je vais en faire d'autres essaies et voir les résultats.
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