Renvoyer des valeurs d'une autre table si condition respectée

Bonjour,

Je vous remercie de votre réponse, elle fonctionne. Je me doute que le nombre "0,00138888888888889" sert à définir une marge d'erreur (marge de 2min max) mais je ne comprends pas d'où sort ce nombre et en quoi il permet de définir une marge d'erreur ? Pourriez-vous m'expliquer s'il vous plait ?

Bonjour,

C'est comme Excel l'interprète en effet. Il doit y avoir d'autres façons de le représenter mais je ne voulais pas me casser la tête. Je sais que la valeur 1 est équivalent a 1 jour pour Excel. Je divise (1/24heures*60minutes) pour avoir la valeur décimale d'une minute que je multiplie alors par 2 pour avoir 2 minutes.

Simple calcul de proportionnalité jours/heures/minutes.

Cdlt,

J'ai bien compris, je vous remercie ! Connaîtriez-vous un cours bien fait sur les formules matricielles que je puisse aller regarder s'il vous plait ? ça a l'air d'être une méthode très puissante, je comprends sur un exemple leur utilisation mais ai du mal à les utiliser moi même.

Je vous remercie d'avance,

Léa

Bonjour,

Les fonctions matricielles sont des formules parfois complexes à comprendre et un concept pas forcément intuitif car il créé un ou plusieurs tableaux en arrière plan en testant des conditions ou en multipliant des résultats de ces tableaux entre eux.

Les cours sont multiples, vous en avez un ici qui explique comment elles fonctionnent et leur différentes présentations. Après ça ne fonctionnera que par manipulation et confrontations aux formules.
Petit conseil pour étudier des formules sous Excel, mettez-vous sur la cellule contenant la formule d'intérêt -> Formules -> Evaluer la formule. C'est le conseil le plus puissant que je peux vous donner pour étudier le fonctionnement des matricielles sur un cas concret.

Cdlt,

Je vous remercie pour ces conseils. J'ai essayé de mettre la formule matricielle que vous m'avez trouvé sous VBA mais ça ne fonctionne pas. Je ne parviens pas à trouver le problème... Auriez-vous une idée s'il vous plait ?

[C2].FormulaArray = "=IF(SUMPRODUCT(($A2>=Sout!$A$8:$A$" & LastRow_Sout & ")*($A2<=Sout!$A$8:$A$"&LastRow_Sout&"))>0,""OUI"","""")"

Bonjour,

Pas besoin de valider en matriciel. De plus, je conseille de mettre un espace de chaque côté du signe de concaténation & :

[C2].Formula = "=IF(SUMPRODUCT(($A2>=Sout!$A$8:$A$" & LastRow_Sout & ")*($A2<=Sout!$A$8:$A$" & LastRow_Sout & "))>0,""OUI"","""")"

Cdlt,

Bonjour,

C'était donc le fait de mettre Formula.Array au lieu de Formula qui ne fonctionnait pas ?

Je vous remercie pour votre aide !

Bonjour,

En partie, et de mettre des espaces entre chaque caractère de concaténation " & " lorsque vous avez une variable avant ou après car cela à tendance à faire planter le code, le compilateur ne les détectant pas forcément comme variable ou texte.

Cdlt,

8test.xlsx (15.13 Ko)

Bonjour,

J'aurais de nouveau besoin d'aide sur une formule matricielle s'il vous plait.. J'aimerais récupérer les températures indiquées en colonne C de l'onglet "BDD Tstockage" pour tous les tanks de l'onglet "BDD Age Matiere". J'ai essayé cette formule en colonne C de l'onglet "BDD Age Matiere" mais elle ne fonctionne pas.. Sauriez-vous pourquoi s'il vous plait ?

=SI(MIN((B2:B8='BDD Tstockage'!A2:A19)*('BDD Age Matiere'!A2:A8='BDD Tstockage'!B2:B19))=0;"";'BDD Tstockage'!C2:C19)

Bonjour,

En C2 et vous tirez :

=SOMMEPROD((B2='BDD Tstockage'!$A$2:$A$19)*(A2='BDD Tstockage'!$B$2:$B$19)*('BDD Tstockage'!$C$2:$C$19))

La formule ne fonctionne pas car vous ne maîtrisez pas bien comment fonctionne une matricielle. Vous ne souhaitez pas comparer deux plages entres elles mais plutôt une valeur d'une cellule, A2 ou B2 par exemple, avec des plages.

Ensuite vous ne pouvez pas demander la valeur minimale, car la température est unique pour un tank a un instant t, vous ne pouvez pas avoir plusieurs mesures dans votre exemple. De plus, une valeur minimale sera toujours 0, en effet si vous cherchez le TANK 7 dans la BDD de stockage alors dès que vous allez rencontrer une autre valeur que TANK 7 le résultat de cette formule dans la matricielle sera 0, donc la valeur minimale sera forcément 0.

Je pense qu'il faut plus vous documenter sur les matricielles et vous exercer sur des cas peut être plus simple afin de comprendre leur fonctionnement.

Et comme expliqué : une fois sur votre cellule -> formules -> Evaluer la formule pour analyser son fonctionnement et les résultats renvoyés.

Cdlt,

PS : Je pense que votre sujet initial est résolu, il serait pertinent d'en ouvrir un nouveau.

Je vous remercie pour ces explications et ces conseils. J'aurais dû poster un autre sujet effectivement, je m'en excuse. Je poste cependant une dernière question ici car elle fait référence à la formule que vous m'avez indiquée juste au dessus. J'ai essayé d'écrire la formule matricielle sous VBA mais j'ai un message d'erreur du type "erreur définie par l'objet ou l'application". Voilà ce que j'ai essayé :

[F2].Formula = "=IF(SUMPRODUCT(($B2='BDD Tstockage'!$A$2:$A$" & LastRow_Tstockage & ") * ('BDD Age Matiere'!$A2='BDD Tstockage'!$B$2:$B$ " & LastRow_Tstockage & "))=0,"""",SUMPRODUCT(($B2='BDD Tstockage'!$A$2:$A$" & LastRow_Tstockage & ")*('BDD Age Matiere'!$A2='BDD Tstockage'!$B$2:$B$ " & LastRow_Tstockage & ")*('BDD Tstockage'!$C$2:$C$ " & LastRow_Tstockage & ")))"

Sauriez-vous m'aider s'il vous plait ?

Bonjour,

Vous avez des espaces à certain endroits qui n'ont pas lieu d'être nottament "$B$2:$B$ ""

[F2].Formula = "=IF(SUMPRODUCT(($B2='BDD Tstockage'!$A$2:$A$" & LastRow_Tstockage & ")*($A2='BDD Tstockage'!$B$2:$B$" & LastRow_Tstockage & "))=0,"""",SUMPRODUCT(($B2='BDD Tstockage'!$A$2:$A$" & LastRow_Tstockage & ")*($A2='BDD Tstockage'!$B$2:$B$" & LastRow_Tstockage & ")*('BDD Tstockage'!$C$2:$C$" & LastRow_Tstockage & ")))"

Cdlt,

Bonjour,

Exact... Je vous remercie et vous souhaite une bonne journée !

Léa

Rechercher des sujets similaires à "renvoyer valeurs table condition respectee"