Microsoft 365 renvoyer du texte selon un critère texte suvi d'un critère d'intervalle

dalem7

XLDnaute Nouveau
Bonjour je cherche à faire une formule avec un critère texte et un critère intervalle qui permet de renvoyer le texte associé à une table ou on a une colonne associé aux individus (a,b,c,d) pour lequel chacun on des intervalles variable .

j'aimerais pouvoir utiliser cette formule dans une autre table pour pouvoir demander la classe selon l'individu et le nombre (en respect de son intervalle).

individu nombre classe
alain 2.5 formule=A
benoit 2.4 formule=A
benoit 2.5 formule=C
benoit 11 formule=erreur

individudeàclasse
alain05A
alain510b
alain1011.5C
benoit02B
benoit22.5A
benoit2.510C
charle030.2D
charle30.231E
charle3140F
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Dalem,

bienvenue sur le site XLD ! :)

dans le fichier joint, fais des essais en modifiant F2 et G2.

formule en H2 : =SI(OU(F2="";G2="");"";Classe(F2;G2))

VB:
Option Explicit: Option Compare Text

Function Classe(nom$, nbr#) As String
  Dim n&, i&
  n = Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Function
  For i = 2 To n
    With Cells(i, 1)
      If .Value = nom Then
        If nbr >= .Offset(, 1) And nbr < .Offset(, 2) _
          Then Classe = .Offset(, 3): Exit Function
      End If
    End With
  Next i
  Classe = "erreur"
End Function

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. ;)

soan
 

Pièces jointes

  • Exo Dalem7.xlsm
    15.6 KB · Affichages: 13

soan

XLDnaute Barbatruc
Inactif
Bonsoir dalem,

merci pour ton retour ! 😊 j'ajoute cette précision importante : ça marchera tout aussi bien même si la liste n'est pas triée au préalable sur les noms des individus ! (en d'autres termes, la liste peut avoir des noms d'individus qui sont mélangés)

de plus, pour un même individu, c'est pas obligé que les intervalles soient classés dans l'ordre croissant : ces intervalles aussi peuvent être mélangés ; exemple : pour alain, ça pourrait être :

Code:
alain ;  5 ; 10   ; B
alain ;  0 ;  5   ; A
alain ; 10 ; 11,5 ; C

le code VBA de ma fonction Classe() retournera quand même le bon résultat ! 😊


rappel : dans cet exo, pour un intervalle donné, c'est de la 1ère borne incluse à la 2ème borne exclue ! en mathématiques, on le note ainsi : [ a ; b [ (attention au sens des crochets par rapport au nombre a ou b !)

exemple : pour « alain ; 5 ; 10 », l'intervalle est : [ 5 ; 10 [ : de 5 compris à 10 non compris, donc de 5 inclus à 10 exclu ; en effet, 10 fait partie de cet autre intervalle : « alain ; 10 ; 11,5 » : [ 10 ; 11;5 [

soan
 
Dernière édition:

Statistiques des forums

Discussions
315 095
Messages
2 116 167
Membres
112 675
dernier inscrit
Tazra_IMOU