formule plus grande valeur

Le
Circé
Bonjour à tous les excelliens !

Petit problème de formule

Soit une base d'un certain nb de lignes et de colonnes. J'ai une
colonne CATEGEORIE, pour laquelle il existe 7 types de données. Pour
faire simple on va dire Catégorie1, Catégorie2, etc.
J'ai aussi une colonne MONTANT.

J'ai besoin de récupérer sur une autre feuille, à travers 7 petits
tableaux les cinq plus grandes valeurs pour chaque catégorie, ainsi que
les données correspondantes se trouvant dans quelques autres colonnes.

Si c'est pas possible par formule, je suis pas allergique aux macros

En tous les cas, merci par avance et bonne journée !

Circé
la faq Word a changé :
http://faqword.fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
papou
Le #16636731
Bonjour Circé
En ce qui me concerne, et si j'ai bien tout compris, une petite bidouille
nécessaire pour y parvenir.
Plutôt que de décrire, regarde mon exemple ici :
http://cjoint.com/data/iBlEZ51NJm.htm

Cordialement
Pascal

"Circé"
Bonjour à tous les excelliens !

Petit problème de formule...

Soit une base d'un certain nb de lignes et de colonnes. J'ai une colonne
CATEGEORIE, pour laquelle il existe 7 types de données. Pour faire simple
on va dire Catégorie1, Catégorie2, etc.
J'ai aussi une colonne MONTANT.

J'ai besoin de récupérer sur une autre feuille, à travers 7 petits
tableaux les cinq plus grandes valeurs pour chaque catégorie, ainsi que
les données correspondantes se trouvant dans quelques autres colonnes.

Si c'est pas possible par formule, je suis pas allergique aux macros...

En tous les cas, merci par avance et bonne journée !

Circé
la faq Word a changé :
http://faqword.fr




Daniel.C
Le #16638111
Bonjour.
Si les catégories sont en colonne A, les montants en colonne B et une 3e
valeur en colonne C. Pour obtenir les 5 plus grands montants correspondant à
la catégorie "catégorie1", mets en E1 la formule matricielle suivante
(valider avec CTRL+MAJ+Entrée) :
=GRANDE.VALEUR(($A$1:$A$21="catégorie")*$B$1:$B$21;LIGNE())
et recopie vers le bas. Pour obtenir la valeur correspondante de la colonne
C :
=INDEX($C$1:$C$21;SOMMEPROD(($A$1:$A$21="catégorie")*($B$1:$B$21á)*LIGNE($1:$21)))
(Naturellement, redimensionne les plages).
Cordialement.
Daniel
"Circé"
Bonjour à tous les excelliens !

Petit problème de formule...

Soit une base d'un certain nb de lignes et de colonnes. J'ai une colonne
CATEGEORIE, pour laquelle il existe 7 types de données. Pour faire simple
on va dire Catégorie1, Catégorie2, etc.
J'ai aussi une colonne MONTANT.

J'ai besoin de récupérer sur une autre feuille, à travers 7 petits
tableaux les cinq plus grandes valeurs pour chaque catégorie, ainsi que
les données correspondantes se trouvant dans quelques autres colonnes.

Si c'est pas possible par formule, je suis pas allergique aux macros...

En tous les cas, merci par avance et bonne journée !

Circé
la faq Word a changé :
http://faqword.fr




Circé
Le #16640631
Merci à tous les deux.

papou, ton exemple ne me convient pas puisque j'ai besoin, non pas du
max, mais des 5 plus grandes valeurs.

Daniel, la formule matricielle pour trouver les 5 plus grandes valeurs
me va bien, sauf que je ne comprends pas ton utilisation de la fonction
LIGNE qui ne fonctionne pas. Ce n'est pas grave, j'ai remplacé LIGNE
par 1, 2, 3, 4 et 5 et mes résultats sont bons.

Par contre, pour la formule index, la fonction LIGNE ne va toujours
pas, et les résultats sont faux.

Une idée ?

Circé
la faq word a changé :
http://faqword.fr

Daniel.C a écrit :
Bonjour.
Si les catégories sont en colonne A, les montants en colonne B et une 3e
valeur en colonne C. Pour obtenir les 5 plus grands montants correspondant à
la catégorie "catégorie1", mets en E1 la formule matricielle suivante
(valider avec CTRL+MAJ+Entrée) :
=GRANDE.VALEUR(($A$1:$A$21="catégorie")*$B$1:$B$21;LIGNE())
et recopie vers le bas. Pour obtenir la valeur correspondante de la colonne C
:
=INDEX($C$1:$C$21;SOMMEPROD(($A$1:$A$21="catégorie")*($B$1:$B$21á)*LIGNE($1:$21)))
(Naturellement, redimensionne les plages).
Cordialement.
Daniel
"Circé"
Bonjour à tous les excelliens !

Petit problème de formule...

Soit une base d'un certain nb de lignes et de colonnes. J'ai une colonne
CATEGEORIE, pour laquelle il existe 7 types de données. Pour faire simple
on va dire Catégorie1, Catégorie2, etc.
J'ai aussi une colonne MONTANT.

J'ai besoin de récupérer sur une autre feuille, à travers 7 petits tableaux
les cinq plus grandes valeurs pour chaque catégorie, ainsi que les données
correspondantes se trouvant dans quelques autres colonnes.

Si c'est pas possible par formule, je suis pas allergique aux macros...

En tous les cas, merci par avance et bonne journée !

Circé
la faq Word a changé :
http://faqword.fr






CAP2
Le #16640611
Salut Circé,

une macro bien artisanale, mais qui fonctionne je pense

Il faut une feuille "feuil1" avec ta base, une feuille "resultat" pour
récupérer le tout, et une feuille "trans". De plus, dans mon exemple je suis
parti du principe que le champ CATEGORIE est en 5ème position, donc dans la
ligne

Selection.AutoFilter Field:=5, Criteria1:=liste(i)

tu remplaces 5 par la position de ton champ...

Une dernière chose, dans le code remplace Catégorie1, Catégorie2,... par les
noms des 7 types de données de ton champ...

Voilà la proc :

Sub Circe()

Dim liste As Variant

liste = Array("Catégorie1", "Catégorie2", "Catégorie3", "Catégorie4",
"Catégorie5", "Catégorie6", "Catégorie7")


Worksheets("resultat").Select

ActiveSheet.Cells.Select
Selection.ClearContents

For i = 0 To 6

Worksheets("Feuil1").Select
ActiveSheet.Range("A1").CurrentRegion.Select

Selection.AutoFilter Field:=5, Criteria1:=liste(i)

Selection.Sort Key1:="MONTANT", Order1:=xlDescending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Selection.CurrentRegion.Select
Selection.Copy

Worksheets("trans").Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select

ActiveSheet.Paste

ActiveSheet.Range("A65536").End(xlUp).Select
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select

ActiveSheet.Range(Selection, Selection.End(xlToRight)).Select
ActiveSheet.Range(Selection, Selection.Offset(4, 0)).Select
Application.CutCopyMode = False
Selection.Copy

Worksheets("resultat").Activate
ActiveSheet.Range("A65536").End(xlUp).Offset(2, 0).Select
ActiveSheet.Paste

Worksheets("trans").Select

ActiveSheet.Cells.Select
Selection.ClearContents

Next

Worksheets("Feuil1").Activate
ActiveSheet.Range("A1").CurrentRegion.Select
Selection.AutoFilter

Worksheets("resultat").Activate
ActiveSheet.Range("A1").Select

End Sub

Ca marche ?

CAP2

"Circé"
Bonjour à tous les excelliens !

Petit problème de formule...

Soit une base d'un certain nb de lignes et de colonnes. J'ai une colonne
CATEGEORIE, pour laquelle il existe 7 types de données. Pour faire simple
on va dire Catégorie1, Catégorie2, etc.
J'ai aussi une colonne MONTANT.

J'ai besoin de récupérer sur une autre feuille, à travers 7 petits
tableaux les cinq plus grandes valeurs pour chaque catégorie, ainsi que
les données correspondantes se trouvant dans quelques autres colonnes.

Si c'est pas possible par formule, je suis pas allergique aux macros...

En tous les cas, merci par avance et bonne journée !

Circé
la faq Word a changé :
http://faqword.fr




Daniel.C
Le #16640601
Oui. je suis parti du principe que la formule des 5 plus grandes valeurs
débutaient en E1 (de E1 à E5); LIGNE() renvoie 1 en E1, 2 en E2 etc.
C'est pareil pour la fonction INDEX LIGNE($1:$21) renoie les valeurs 1, 2,
3, 4 etc. Si ta plage est A10:A20, indique LIGNE($10:$20).
La formule devient :
=INDEX($C$1:$C$30;SOMMEPROD(($A$10:$A$30="catégorie1")*($B$10:$B$30á0)*LIGNE($10:$30)))
Note "INDEX($C$1:$C$30..."La plage débute toujours à la première ligne car
"SOMMEPROD ..." détermine le numéro de ligne.
Regarde le classeur à l'adresse :
http://cjoint.com/?iBolY3OwJI
Daniel
"Circé"
Merci à tous les deux.

papou, ton exemple ne me convient pas puisque j'ai besoin, non pas du max,
mais des 5 plus grandes valeurs.

Daniel, la formule matricielle pour trouver les 5 plus grandes valeurs me
va bien, sauf que je ne comprends pas ton utilisation de la fonction LIGNE
qui ne fonctionne pas. Ce n'est pas grave, j'ai remplacé LIGNE par 1, 2,
3, 4 et 5 et mes résultats sont bons.

Par contre, pour la formule index, la fonction LIGNE ne va toujours pas,
et les résultats sont faux.

Une idée ?

Circé
la faq word a changé :
http://faqword.fr

Daniel.C a écrit :
Bonjour.
Si les catégories sont en colonne A, les montants en colonne B et une 3e
valeur en colonne C. Pour obtenir les 5 plus grands montants
correspondant à la catégorie "catégorie1", mets en E1 la formule
matricielle suivante (valider avec CTRL+MAJ+Entrée) :
=GRANDE.VALEUR(($A$1:$A$21="catégorie")*$B$1:$B$21;LIGNE())
et recopie vers le bas. Pour obtenir la valeur correspondante de la
colonne C :
=INDEX($C$1:$C$21;SOMMEPROD(($A$1:$A$21="catégorie")*($B$1:$B$21á)*LIGNE($1:$21)))
(Naturellement, redimensionne les plages).
Cordialement.
Daniel
"Circé"
Bonjour à tous les excelliens !

Petit problème de formule...

Soit une base d'un certain nb de lignes et de colonnes. J'ai une colonne
CATEGEORIE, pour laquelle il existe 7 types de données. Pour faire
simple on va dire Catégorie1, Catégorie2, etc.
J'ai aussi une colonne MONTANT.

J'ai besoin de récupérer sur une autre feuille, à travers 7 petits
tableaux les cinq plus grandes valeurs pour chaque catégorie, ainsi que
les données correspondantes se trouvant dans quelques autres colonnes.

Si c'est pas possible par formule, je suis pas allergique aux macros...

En tous les cas, merci par avance et bonne journée !

Circé
la faq Word a changé :
http://faqword.fr










Circé
Le #16639891
Hello tout le monde !

Et voici le résultat de l'affaire :

Pour la première formule, je garde donc celle de Daniel qui me récupère
convenablement les 5 plus grandes valeurs de chaque catégorie.

Pour la seconde formule, j'ai pris celle de Corto, car en fait, grâce à
la matricielle, la formule est finalement la plus simple et j'ai pas à
me prendre la tête ! ;)

CAP2, j'avais bien pensé à ce type de macro, mais effectivement je
trouvais que c'était un peu artisanal. Sachant que je ne vous ai pas
tout dit sur ce classeur.
C'est en fait une extraction d'une base externe, extraction qui se fait
environ 3 fois par semaine, et qui donne un tableau très basique d'une
quarantaine de colonnes.
J'ai fait tout un paquet de macros (complémentaires) pour sortir de ce
tableau toute une série de stats, graphs & co. C'était ce seul point
noir qui restait, et avec vos aides à tous, c'est tout bon ! J'ai plus
qu'à convertir ça en macro...

Donc un grand merci et à la prochaine ! ;)

A et pis... Merci à Corto pour le voyage sur la lune... :D

Circé
la faq word a changé :
http://faqword.free.fr


Corto avait écrit le 27/08/2008 :
Bonjour Circé,
Dans mon exemple J'ai la liste des cratères lunaires en colonne A et leur
diamètre en colonne B
Le tableau va jusqu'a la ligne 1522
Formule colonne F : =GRANDE.VALEUR($B$2:$B$1522;D2)
Formule Colonne E :
{=INDEX($A$2:$A$1522;EQUIV(F2;($A$2:$A$1522<>E1)*$B$2:$B$1522;0))}
*(Il ne faut pas mettre les accolades mais valider par Ctrl+Maj+Enter)*
Exemple :
Cratère Lunaire
Diamètre (En Km)

Top 10
Abbe 66,00 1 Hertzsprung 591,00
Abbot 10,00 2 Apollo 537,00
Abel 122,00 3 Korolev 437,00
Abenezra 42,00 4 Birkhoff 345,00
Abetti 65,00 5 Poincaré 319,00
Abul Wáfa 55,00 6 Planck 314,00
Abulfeda 65,00 7 Mendeleev 313,00
Acosta 13,00 8 Lorentz 312,00
Adams 66,00 9 Schrödinger 312,00
Agatharchide 48,00 10 Bailly 287,00
Agrippa 44,00


Airy 36,00


Aitken 135,00


Akis 2,00


Alan 2,00


Al-Bakri 12,00


Etc .....







Corto

Circé a écrit :
Bonjour à tous les excelliens !

Petit problème de formule...

Soit une base d'un certain nb de lignes et de colonnes. J'ai une colonne
CATEGEORIE, pour laquelle il existe 7 types de données. Pour faire simple
on va dire Catégorie1, Catégorie2, etc.
J'ai aussi une colonne MONTANT.

J'ai besoin de récupérer sur une autre feuille, à travers 7 petits tableaux
les cinq plus grandes valeurs pour chaque catégorie, ainsi que les données
correspondantes se trouvant dans quelques autres colonnes.

Si c'est pas possible par formule, je suis pas allergique aux macros...

En tous les cas, merci par avance et bonne journée !

Circé
la faq Word a changé :
http://faqword.fr




Publicité
Poster une réponse
Anonyme