Recherches sur intervalles

Bonjour,

J'ai une difficulté sur une formule dans le tableur en pièce jointe, même si je peux m'adapter pour arriver au résultat voulu.

En colonne Z j'ai donc ma formule qui vient chercher dans mon tableau la valeur selon la zone et le poids brut.

1. Mes recherches se font sur des intervalles. Par exemple sur l'intervalle de 0 à 5, on est à un tarif de 5,61. Ce qui veut dire qu'Excel effectue sa recherche "à partir de...", or pour une meilleure visibilité il faudrait que le tarif de 5,61 soit sur la ligne de la tranche 5 (le 8,11 sur la ligne tranche 10 etc.), seulement il faut que je modifie ma formule en conséquence et je ne trouve pas...

2. Dans notre manière d'exploiter, si on a par exemple un poids de 20 kilos alors ça fait partie de la tranche à 8,78, or ma formule me trouve 10,84 (cf ligne 9), ce qui est normal, mais comment faire en sorte dans la formule que la tranche commence à 20 exclu (etc.) ? Sinon je mets dans mon tableau 20.0001 mais c'est mojns propre...

En espérant avoir été clair, merci d'avance pour vos retours.

Bonjour Nickal,

Je ne comprends pas votre résonnement, ou ce sont vos tranches qui sont mal définies

Peut-être avec ce genre de tableau

Tranche MinTranche MaxBase% zone 1Zone 1
04,995,610,00%5,61
59,998,110,00%8,11
1019,998,780,00%8,78
2029,9910,840,00%10,84
3039,9911,620,00%11,62
4049,9911,950,00%11,95
5059,9911,950,00%11,95
6069,9912,830,00%12,83
7079,9912,830,00%12,83
8089,9912,830,00%12,83
9099,9912,830,00%12,83
100499,9911,480,00%11,48
500999,9911,230,00%11,23
10002999,9911,230,00%11,23

Et avec ce genre de formule

=SOMMEPROD(([@[Poids brut]]-0,01>= Tableau24[Tranche Min])*([@[Poids brut]]-0,01<=Tableau24[Tranche Max])*Tableau24[Zone 1])

A+

Oui, effectivement avec ce genre de tableau et de formule ça fonctionne, j'ai le bon résultat. Merci.

En revanche j'avais utilisé INDEX / EQUIV car dans mon tableau je vais ajouter une Zone 2, Zone 3 etc. en fonction de mes futurs besoins de découpage. J'ai essayé d'adapter une fonction avec RECHERCHEX pour remplacer INDEX/EQUIV mais je n'ai pas trouvé pour que ça fonctionne sur des intervalles et pas uniquement sur des valeurs exactes. Avez-vous une idée de comment faire ?

Bonjour,

Avec une fonction si VBA est permis.

Bonjour

je n'ai pas regardé dans le détail le fichier mais pour répondre à la question du RECHERCHEX c'est avec le 5e argument (-1 dans votre cas) ou le 3eme argument de EQUIVX

image

Stéphane

Merci pour vos retour, je vais regarder et revenir vers vous. Éric la colonne AA se met en erreur (#nom) quand je change une valeur en colonne O ou R (zone ou poids brut).

Merci d'indiquer les valeurs que vous avez prises.

Dans mon exemple la colonne ne devrait contenir que Zone 1, Zone 2 ou Zone 3 et qu'on devrait retrouver en tant que colonne dans le tableau structuré "t_2026" (et non Tableau24) . Si vous prenez d'autres valeurs que les trois précitées, c'est normal. Il faudrait connaître le nombre de zones possibles, pour compléter la fonction.

Au cas où vous n'auriez pas été voir dans l'éditeur VBA, voici la fonction :

Function Livraisons2026(ByVal Zone As String, ByVal Poids As Double) As Double

Dim I As Integer
Dim AireZones As Range, AireTranches As Range

    Livraisons2026 = 0

    Set AireTranches = Range("t_2026[Tranches]")
    Select Case Zone
           Case "Zone 1"
                 Set AireZones = Range("t_2026[Zone 1]")
           Case "Zone 2"
                 Set AireZones = Range("t_2026[Zone 2]")
           Case "Zone 3"
                 Set AireZones = Range("t_2026[Zone 3]")
    End Select

    For I = 1 To AireZones.Count
        If Poids >= AireTranches(I) And Poids < AireTranches(I + 1) Then
           Livraisons2026 = AireZones(I)
           Exit Function
        End If
    Next I

    Set AireZones = Nothing: Set AireTranches = Nothing

End Function

Le mieux serait de renvoyer le fichier avec les erreurs.

Re-bonjour
sur la base du fichier envoyé avec autant de "Zone" que nécessaire

le premier RECHERCHEX va chercher la tranche inférieure (le -1 en 5e argument)

le RECHERCHEX en 3e argument du premier RECHERCHEX pour trouver la colonne correspondant à la Zone (1, 2, 3 ... non limité)

=RECHERCHEX([@[Poids brut]];Tableau24[Tranches];RECHERCHEX([@Zone];Tableau24[#En-têtes];Tableau24);;-1)

ou avec INDEX et 2 EQUIVX

=INDEX(Tableau24;EQUIVX([@[Poids brut]];Tableau24[Tranches];-1);EQUIVX([@Zone];Tableau24[#En-têtes]))

le premier EQUIVX avec -1 pour la tranche inférieure et le 2d EQUIVX pour trouver la colonne correspondant à la zone

Stéphane

Bonjour,

Merci beaucoup pour ces retours, ça fonctionne.

Raccourcix, J'ai juste une subtilité : il faudrait que si on a par exemple un poids brut de 5, alors la valeur pour la zone 1 soit 5,61 et non 8,11 (sinon je mettrai la tranche à 5,001 pour arriver au résultat voulu) ; par contre effectivement si c'est strictement supérieur à 5 alors on passe à 8,11.

Bonjour

Pour inclure la valeur max de chaque seuil (c'est à dire entre 0 et 5 inclus) il faut indiquer dans la table le seuil haut (donc 5) et non le seuil bas (ici 0)

et modifier les RECHERCHEX ou EQUIVX avec l'argument 1 et non -1

image

Stéphane

Merci encore.

Bonne journée.

Rechercher des sujets similaires à "recherches intervalles"