Microsoft 365 xlookup 2 criteres dont dans fourchette de valeurs

eric72

XLDnaute Accro
Bonjour à tous,
Et oui encore un nouveau problème, je souhaite avec ce code
VB:
essai = 11 * _
Application.WorksheetFunction.XLookup("NANTES" & CDbl("11"), Range("Externalisee[SITE]") & Range("Externalisee[Externalisee Nb Salariés (Siège)]"), _
Range("Externalisee[Externalisee Prix global (cabinet)]"), "", -1)
de faire un xlookup avec deux critères SITE et Nombre de salariés dans une tranche, j'ai donc essayé avec une formule en "d15", cela fonctionne en partie (sauf quend je met 10 ou 20, allez savoir pourquoi) fin de pouvoir reproduire en VBA mais je ne m'en sors pas alors que...
S'il vous vient une idée géniale pour m'aider!!! ;)
Merci beaucoup
 

Pièces jointes

  • TEST.xlsm
    33.9 KB · Affichages: 9
Solution
Re bonjour à tous,
Après réflexion, j'ai changé ma méthode, l'autre paraissait un peu trop complexe, je vais donc clore ce sujet.
J'en profite pour remercier tous ceux qui se sont intéressés à mon problème, CP4, JHA, TooFatBoy qui sont toujours prêts à aider, sans eux on ne ferait pas grand chose!!!
Belle soirée à tous
Eric

cp4

XLDnaute Barbatruc
Sur le principe c'est bien cela, par contre il peut y avoir 8 salariés donc dans ce cas le résultat doit renvoyer 13 qui équivaut à la tranche de 6 à 10, dans ton exemple cela renvoie toujours 17, mais sur le principe c'est ok
J'ai répondu d'après ma compréhension. Ce que je t'ai proposé, dans les comboboxs il y a les données de la 1ère colonne sans doublon, et la 2ème les données de la seconde colonne sans doublon.
Elle ne peut pas t'afficher 6 à 10 plus que ces chiffres ne figurent pas dans la colonne.
Etant donné que dans la colonne B, 8 n'existe pas. Pourquoi ça devrait renvoyer 13, explique?
 

eric72

XLDnaute Accro
J'ai répondu d'après ma compréhension. Ce que je t'ai proposé, dans les comboboxs il y a les données de la 1ère colonne sans doublon, et la 2ème les données de la seconde colonne sans doublon.
Elle ne peut pas t'afficher 6 à 10 plus que ces chiffres ne figurent pas dans la colonne.
Etant donné que dans la colonne B, 8 n'existe pas. Pourquoi ça devrait renvoyer 13, explique?
alors je m'explique dans la colonne "B", 1,2,6,11,21 correspondent à des tranches qui sont 1 salarié, de 2 à 5 salariés, de 6 à 10 salariés et enfin 21 salariés et plus.
Je pensais qu'on pouvait rechercher avec une valeur approximative le nombre de salariés, exemple si le nombre de salariés est 8 il se trouve dans la tranche de 6 à 10 donc on applique le prix qui correspond à la ligne (nb salariés) 6, j'espère être assez clair!!!
cela fonctionne en formule en précisant à la fin de la formule ;1) ou ;-1), je pensais que c'était donc possible en VBA
 

cp4

XLDnaute Barbatruc
alors je m'explique dans la colonne "B", 1,2,6,11,21 correspondent à des tranches qui sont 1 salarié, de 2 à 5 salariés, de 6 à 10 salariés et enfin 21 salariés et plus.
Je pensais qu'on pouvait rechercher avec une valeur approximative le nombre de salariés, exemple si le nombre de salariés est 8 il se trouve dans la tranche de 6 à 10 donc on applique le prix qui correspond à la ligne (nb salariés) 6, j'espère être assez clair!!!
cela fonctionne en formule en précisant à la fin de la formule ;1) ou ;-1), je pensais que c'était donc possible en VBA
C'est faisable en VBA, il peut y avoir même plus d'une solution selon les connaissances des aidants.
Est-ce que ton tableau est fixe en dimensions (surtout les lignes)?
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

j'ai essayé de cette manière
VB:
 Application.Index(Range("Externalisee[Externalisee Prix global (cabinet)]"), Application.Match(Sheets("Feuil1").Range("b15").Value, if(Range("Externalisee[SITE]")=sheets("feuil1").range("a15").value,Range("Externalisee[Externalisee Nb Salariés (Cabinet)]"), 1))
mais j'ai une erreur de compilation attendu Expression sur le "IF"
Il me semble que job75 a donné la réponse hier : il faut "faire évaluer les plages".
 

cp4

XLDnaute Barbatruc

Membres actuellement en ligne

Statistiques des forums

Discussions
314 708
Messages
2 112 090
Membres
111 416
dernier inscrit
philipperoy83