Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…