Hellom
Désolé pas dispo de la jné, merci Kiss a et mdo
Pour le critère essai =$C2>=GRANDE.VALEUR($C$2:$C$11;5)
Chose importante : La colonne de critère NE DOIT PAS porter le meme nom que la colonne de la base (encore une bizzarerie de microsoft).
Bonjour
WildDigiSoft,
Votre réponse a résolu le problème. Donc si on a besoin des x petites valeurs, on utilise simplement la formule PETITE VALEUR?
Merci beaucoup à vous tous.
Cordialement
Re WildDigiSoft,
Je reviens encore, désolé! ce matin nous arrivons à faire sortir les 5 plus grandes valeurs, et si il y a des doublons (exemple on a 10 chiffres: 1,2,3,4,5,6,7,8,8,9= les 5 plus grandes valeurs est de 9,8,8,7,6 mais si on veut avoir du résultat sans doublons càd 9,8,7,6,5, comment on fait?
Mercii !
Bonjour à tous,
WildDigisoft, on a un petit problème. La dernière fois nous avons travaillé avec filtre élaborée sans doublon et on a réussi à sortir les 5 plus grandes valeurs sans tenir compte de la première colonne(“Colonne B pour notre cas”). Pour cette fois-ci, on me demande de faire sortir les 5 plus grandes valeur en tenant compte l’inexistence de doublon dans la colonne B c’est à dire que les valeurs des doublons sont sommés pour une ligne.
Ci-joint un fichier expliquant l’ancien résultat et celui souhaité actuellement.
Merci à vous!
=> Filtre élaborée (2).xlsx (9,5 Ko)
Dans ce cas, il est plus rapide de faire un tableau croisé dynamique de l’ensemble des données et de prendre que les 5 plus grande qui sont déjà classées
Avec une macro établissant le TCD (effectue par l’enregistreur et améliorée)
Macro :
Option Explicit
Sub CreationTCD()
Dim Dl%, i% 'Déclaration des variables
'Suppression du TCD s'il existe
Range("O1").Select
If Range("O1").Value <> "" Then
Feuil1.PivotTables("Tableau croisé dynamique3").PivotSelect "", _
xlDataAndLabel, True
Selection.Delete Shift:=xlToLeft
End If
Dl = Range("B" & Rows.Count).End(xlUp).Row 'Dernière ligne colonne B
Range("A2").Select
'Numérote les clients sans les doublons
ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R1C[1]:R[-1]C[1],RC[1])>0,"""",MAX(R1C:R[-1]C)+1)"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & Dl)
'Boucle pour trouver la ligne portant le 5ème client
For i = 1 To Dl
If Cells(i, 1).Value = 5 Then
Range(Cells(1, 2), Cells(i, 3)).Select 'Sélection de la plage à prendre en compte
Exit For
End If
Next i
'Création du TCD
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Range(Cells(1, 2), Cells(i, 3)), Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:=Cells(1, 15), TableName:="Tableau croisé dynamique3", _
DefaultVersion:=xlPivotTableVersion15
With Feuil1.PivotTables("Tableau croisé dynamique3").PivotFields("Client")
.Orientation = xlRowField
.Position = 1
End With
Feuil1.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique3").PivotFields("Montant"), "Somme de Montant", xlSum
'Renomme l'entête CLIENT
Range("O1").Select
ActiveSheet.PivotTables("Tableau croisé dynamique3").CompactLayoutRowHeader = "Client"
'Renomme l'entête MONTANT
Range("P1").Select
ActiveSheet.PivotTables("Tableau croisé dynamique3").DataPivotField.PivotItems( _
"Somme de Montant").Caption = "Montant "
Range("P2").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique3")
.ColumnGrand = False
.RowGrand = False
End With
'Tri des MONTANTS du + grand au + petit
Range("O1").Select
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Client").AutoSort xlDescending, "Montant "
Columns("O:P").EntireColumn.AutoFit 'Formatage des colonnes
Columns("A:A").Clear 'Efface les données de recherche de ligne en colonne A
Range("A1").Select
End Sub