Fonction RANG mais avec 2 critères

Bonjour à tous,

Je bloque sur la réalisation d'une fonction... Mon tableau (en PJ), reprend les prix de transporteurs pour des types de camions et des départements différents. Dans la colonne "RANG" je voudrais donc qu'aparraise la position des transporteurs en fonction de leurs tarifs par département.

Mon objectif est d'obtenir une formule qui puisse être glissée sur l'ensemble du tableau (le vrai tableau contient tous les départements de France ainsi que 9 types de camions...

Je pense qu'une combinaison de fonction SI et RANG devrait être réalisable mais je n'arrive pas à la mettre en place

Merci de votre aide,

56essai-rang.xlsx (10.84 Ko)

Une suggestion qui ne répond pas tout à fait, mais qui est jolie !!!

61wationame.xlsx (15.43 Ko)

Merci, j'avais en effet pensé à croisé dynamique, mon problème est que le format de mon tableau doit rester tel quel puisque le tableau sert de base de données support. De plus ce système étendue à mon tableau d'origine qui dépasse les 6000 lignes serait une véritable usine à gaz

Mais merci tout de même

As-tu bien observé que ton tableau d'origine n'a pas été touché ?

LEs TCD sont conçus justement pour exploiter des données en grand nombre : si tu n'arrives pas à un résultat suffisamment synthétique avec un TCD, tu as peu de chances d'y arriver avec d'autres moyens, en tout cas pas aussi vite et simplement...

Mais je reconnais que l'objectif d'établir un classement n'est pas atteint stricto sensu...

Bonjour,

Une proposition Excel 2010 min, avec la fonction RANG dans le TCD.

Cdlt.

76wationame.xlsx (15.07 Ko)

Merci pour cette proposition, je vais voir s'il est possible de l'exploiter

Mais de base ce qui me bloque c'est que je dois conserver mon tableau initial, donc le mieux serait d'intégrer un fonction sans faire de TCD.... Ce tableau sert de BDD pour un site internet et je suis très restreinte concernant son format

Merci de votre aide

Re,

Une nouvelle proposition à étudier (Excel 2010+).

Cdlt.

55wationame.xlsm (26.25 Ko)
Option Explicit

Public Sub Traitement_Donnees()
Dim wb As Workbook
Dim ws As Worksheet
Dim ptCache As PivotCache
Dim pt As PivotTable
Dim pf As PivotField
Dim modeCalc As XlCalculation

    With Application
        modeCalc = .Calculation
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    Set wb = ActiveWorkbook
    Set ws = wb.Worksheets("Données")
    On Error Resume Next
    wb.Worksheets("Données traitées").Delete
    On Error GoTo 0
    wb.Worksheets.Add After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Données traitées"

    Set ptCache = wb.PivotCaches.Create(xlDatabase, ws.ListObjects(1).Range, 4)
    Set pt = ptCache.CreatePivotTable(Cells(1), "TCD_1", , 4)

    With pt
        .ManualUpdate = True
        .AddFields _
                RowFields:=Array("Département", "Type de camion", "Transporteur")
        With .PivotFields("Prix")
            .Orientation = xlDataField
            .Function = xlSum
            .NumberFormat = "#,##0"
            .Caption = "Prix "
        End With
        .InGridDropZones = True
        .RowAxisLayout xlTabularRow
        .RepeatAllLabels xlRepeatLabels
        .TableStyle2 = ""
        .DisplayContextTooltips = False
        .ShowDrillIndicators = False
        .ColumnGrand = False
        .RowGrand = False
        For Each pf In .PivotFields
            pf.AutoSort xlAscending, pf.Name
            pf.Subtotals(1) = True
            pf.Subtotals(1) = False
        Next pf
        .ManualUpdate = False
        .ManualUpdate = True
        .AddDataField .PivotFields("Prix"), "rang", xlSum
        With .PivotFields("rang")
            .Caption = "rang "
            .Calculation = xlRankAscending
            .BaseField = "Transporteur"
        End With
        .ManualUpdate = False
        .TableRange1.Offset(1, 0).Copy
        Cells(8).PasteSpecial xlPasteValuesAndNumberFormats
    End With

    With ActiveSheet
        .Columns("A:G").Delete
        .Cells(1).CurrentRegion.Borders.Weight = xlThin
        .[A1].Select
    End With

    With Application
        .Calculation = modeCalc
        .CutCopyMode = False
        .EnableEvents = True
        .ScreenUpdating = True
    End With

    ActiveWindow.DisplayGridlines = False

    Set pt = Nothing
    Set ptCache = Nothing
    Set ws = Nothing
    Set wb = Nothing

End Sub

C'est parfait ! Merci beaucoup pour votre aide !

Rechercher des sujets similaires à "fonction rang criteres"