
|
|
|
Auteur
|
Message
|
1
|
|
|
|
Bonjour,
J'aimerai savoir s'il est possible de créer une fonction avec excel qui me permettrai de faire ceci :
J'aimerai avoir sur une feuille 1 dans la colonne B, la valeur maximale de la colonne B de la feuille 2 qui correspond à la même date et que cela se fasse automatiquement. Je pense qu'il faut programmer en VSB mais comme je n'y connais rien je vous demander conseil. J'ai décrit ci-dessous un petit exemple que que voudrais faire.
Feuille 1 :
..........A..........B........
1..01/01/2008...3
2..02/01/2008...6
Feuille 2 :
..........A..........B........
1..01/01/2008...1...
2..01/01/2008...2...
3..01/01/2008...3...
4..02/01/2008...4...
5..02/01/2008...5...
6..02/01/2008...6...
En case B1 de la feuille 1 je devrai trouver la valeur maximale des cases (B1,B2,B3) de la feuille 2 (ce qui correspond à la date 01/01/2008) : B1(Feuil1) = 3.
En case B2 de la feuille 1 je devrai trouver la valeur maximale des cases (B4,B5,B6) de la feuille 2 (ce qui correspond à la date 02/01/2008) : B2(Feuil1) = 6.
Peut-on rendre ce calcul automatique car j'ai des données qui remplit un tableau de plus 10000 lignes et je n'ai pas envie de le faire ligne par ligne ?
Merci d'avance pour vos réponses.
-->Message édité par mongrapin le 26/06/2008 14:04:49<--
-------
Olive
|
|
|
|
|
Salut mongrapin et le forum
sur la Feuil1
B1 : {=MAX((Feuil2!$A$1:$A$20000=Feuil1!$A1)*(Feuil2!$B$1:$B$20000))}
ATTENTION : La formule doit être validée en matricielle : <Ctrl>+<Shift>+<Ebter>. Si Excel la reconnaît comme telle, il ajoute {}(ne pas les mettre manuellement).
Cette formule revient à trouver la valeur la plus grande de la colonne B de Feuil2 dont la valeur A est égale à celle de la colonne A de la Feuil1.
S'il y a besoin d'explications supplémentaires, les demander
A+
-->Message édité par Gorfael le 25/06/2008 13:26:30<--
|
|
|
|
|
Bonjour,
Merci Gorfael, ta solution marche super bien.
J'aurai une autre petite question, j'ai essayé ta formule en changeant le "MAX" par "MIN" pour obtenir la valeur minimal et non maximale, mais j'ai un problème ça ne marche pas : soit ça m'affiche que des zéros alors qu'il n'y a pas de zéro dans les données, soit j'ai la première valeur qui se trouve en face de la date (ce n'est pas la bonne valeur). Je ne comprends pas pourquoi ça ne fonctionne pas.
Merci d'avance pour les explications.
-------
Olive
|
|
|
|
|
mongrapin a écrit :
Bonjour,
Merci Gorfael, ta solution marche super bien.
J'aurai une autre petite question, j'ai essayé ta formule en changeant le "MAX" par "MIN" pour obtenir la valeur minimal et non maximale, mais j'ai un problème ça ne marche pas : soit ça m'affiche que des zéros alors qu'il n'y a pas de zéro dans les données, soit j'ai la première valeur qui se trouve en face de la date (ce n'est pas la bonne valeur). Je ne comprends pas pourquoi ça ne fonctionne pas.
Merci d'avance pour les explications. Salut
Vraisemblablement il devrait manquer les accolades => remets-toi dans la formule et valide avec <Ctrl>+<Shift>+<Ebter>.
eh oui, ça m'arrive souvent
A+
|
|
|
|
|
justement quand je mets les accolades, j'ai que des zéros et quand je ne mets pas les accolades, j'ai la première valeur qui se trouve en face de la date (ce n'est pas la bonne valeur).
La formule que j'ai tappé en B1 feuille 1 est la suivante :
{=MIN((Feuil2!$A$1:$A$20000=Feuil1!$A1)*(Feuil2!$B$1:$B$20000))}
Je ne comprends pas pourquoi ça ne marche pas car je pensais que la fonction "Max" et "Min" marchaient de la même façon, je me trompe ?
-------
Olive
|
|
|
|
|
mongrapin a écrit :
justement quand je mets les accolades, j'ai que des zéros et quand je ne mets pas les accolades, j'ai la première valeur qui se trouve en face de la date (ce n'est pas la bonne valeur).
La formule que j'ai tappé en B1 feuille 1 est la suivante :
{=MIN((Feuil2!$A$1:$A$20000=Feuil1!$A1)*(Feuil2!$B$1:$B$20000))}
Je ne comprends pas pourquoi ça ne marche pas car je pensais que la fonction "Max" et "Min" marchaient de la même façon, je me trompe ? Salut
Pas glop, pas glop
Faisant souvent l'erreur en corrigeant mes formules matricielles de valider par enter, je t'ai attribué la même erreur
C'est plus complexe que ça
J'utilise la propriété d'excel qui retourne 1 pour vrai et 0 pour faux dans les opérations logiques inclues dans un calcul ce qui fait qu'on se retrouve dans la formule pour max avec l'équivalent de
=max((Vrai)*B1;(Vrai)*B2;...;(Faux)*B20000) =>
=max(1*B1;1*B2;...;0*B20000) <=> max(B1;B2;...,0)
Mais dans le MIN, si tu n'as pas de nombre négatif, la plus petite valeur, c'est 0 et crotte
Donc on va faire la même, mais sans la multiplication
B1 : MIN(SI(Feuil2!$A$1:$A$20000=Feuil1!$A1;Feuil2!$B$1:$B$20000;""))
à valider par <Ctrl>+<Shift>+<Enter> bien entendu.
La formule est un peu plus complexe à lire que la précédente, mais elle marche(mieux) si tu remplace MIN par MAX. Et quand j'ai une série de formule, je préfère utiliser la même syntaxe pour les 2, pour facilité les modifs, si j'en fais plus tard.
De même, l'adressage absolu ou relatif est toujours en vue de recopier la formule (ici, en colonne).
Quand tu construis une formule sur plusieurs feuilles, je te conseillerais de toujours commencer sur une seule. L'avantage c'est que si elle ne fonctionne pas, tu as tout sous les yeux sans changer de pages. L'inconvénient, c'est que si elle fonctionne sur une seule page... c'est pas sûr qu'elle fonctionne sur plusieurs,mais au moins, tu es (raisonnablement) sûr de ta syntaxe.
Donc après tu n'as qu'à trouver l'erreur du problème de page et pas de toute la formule (sauf quand tu fais des erreurs en recommençant ta formule . Ouais, c'est du vécu)
A+
-->Message édité par Gorfael le 26/06/2008 10:24:35<--
|
|
|
|
|
|
Ca marche nickel, encore un grand merci Gorfael pour tes explications et ta rapidité de réponse.
-------
Olive
|
|
1
|
|

|
> paru le 07/08/2008
Hors-Série en vente actuellement.
|