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)
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 okSi j'ai bien compris dans un userform, ton fichier en retour.
cela doit renvoyer 13 si je choisi NANTES et 8 salariés (j'avis oublié de mettre mon exemple, désolé)Si j'ai bien compris dans un userform, ton fichier en retour.
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.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
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.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?
C'est faisable en VBA, il peut y avoir même plus d'une solution selon les connaissances des aidants.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
Le nombre de colonnes ne bougera pas, et pour etre sur on ajoute deux lignes vides comme ça le nombre de lignes n'augmentera plusC'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)?
Il me semble que job75 a donné la réponse hier : il faut "faire évaluer les plages".j'ai essayé de cette manière
mais j'ai une erreur de compilation attendu Expression sur le "IF"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))
Bonjour @TooFatBoy
Merci beaucoup pour cette solution mais malheureusement les noms et les tranches sont figées alors que les noms peuvent changer, sinon c'était génialIl peut y avoir mieux. Tu adapteras à ta guise.
bonjour toofatboy
Désolé pour le boulot que tu as fait et merci encore mais malheureusement les noms peuvent changer et aussi les tranches cela peut passer de 3 à 6, puis de 7 à 14 par exemple... AIE AIE AIE!!!Il peut y avoir mieux. Tu adapteras à ta guise.
c'est peut-être tout simplement insoluble en VBA!!!
he oui! si tu joues au yoyo ma solution ne sera pas bonne.Désolé pour le boulot que tu as fait et merci encore mais malheureusement les noms peuvent changer et aussi les tranches cela peut passer de 3 à 6, puis de 7 à 14 par exemple... AIE AIE AIE!!!