Fonction grande.valeur
Résolu
giiggz
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
giiggz Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
giiggz Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais savoir comment faire pour trouver la n-ième plus grande valeur sur une plage de cellule qui se trouve sur deux onglets différents, svp ?
J'ai essayé avec la fonction GRANDE.VALEUR mais dès que la plage de cellule concerne 2 onglets différents, la fonction ne fonctionne plus.
Merci par avance,
Cordialement,
Guillaume.
J'aimerais savoir comment faire pour trouver la n-ième plus grande valeur sur une plage de cellule qui se trouve sur deux onglets différents, svp ?
J'ai essayé avec la fonction GRANDE.VALEUR mais dès que la plage de cellule concerne 2 onglets différents, la fonction ne fonctionne plus.
Merci par avance,
Cordialement,
Guillaume.
A voir également:
- Fonction grande.valeur
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
8 réponses
Bonsoir,
Je viens d'essayer, j'arrive à avoir sur l'onglet "Feuil1" la Nième plus grande valeur d'un tableau se trouvant sur un autre onglet (ici "Plan Comptable").
La formule qui s'affiche à l'endroit où je veux le résultat est:
=GRANDE.VALEUR('Plan Comptable'!L44:L56;4)
(les apostrophes qui entourent le nom de l'onglet source, ici Plan Comptable, ne sont nécessaires que si le nom de l'onglet contient des espaces).
Ou alors, la question est: la plage de cellules sur laquelle porte la recherche est répartie sur plusieurs onglets différents. Mais dans ce cas, je ne sais pas définir une telle plage.
Je viens d'essayer, j'arrive à avoir sur l'onglet "Feuil1" la Nième plus grande valeur d'un tableau se trouvant sur un autre onglet (ici "Plan Comptable").
La formule qui s'affiche à l'endroit où je veux le résultat est:
=GRANDE.VALEUR('Plan Comptable'!L44:L56;4)
(les apostrophes qui entourent le nom de l'onglet source, ici Plan Comptable, ne sont nécessaires que si le nom de l'onglet contient des espaces).
Ou alors, la question est: la plage de cellules sur laquelle porte la recherche est répartie sur plusieurs onglets différents. Mais dans ce cas, je ne sais pas définir une telle plage.
Bonjour
le plus simple serait de renvoyer toutes vos valeurs cote à cote en colonne dans une feuille masquée et d'utiliser cette plage
crdlmnt
le plus simple serait de renvoyer toutes vos valeurs cote à cote en colonne dans une feuille masquée et d'utiliser cette plage
crdlmnt
Bonjour,
Effectivement, Hillian Fellers, la fonction que je recherche correspond bien à la question : "la plage de cellules sur laquelle porte la recherche est répartie sur plusieurs onglets différents.".
Merci Vaucluse pour cette solution. Si je n'ai pas de meilleure réponse, je me verrai obligé d'utiliser cette solution.
Bien cordialement,
Guillaume.
Effectivement, Hillian Fellers, la fonction que je recherche correspond bien à la question : "la plage de cellules sur laquelle porte la recherche est répartie sur plusieurs onglets différents.".
Merci Vaucluse pour cette solution. Si je n'ai pas de meilleure réponse, je me verrai obligé d'utiliser cette solution.
Bien cordialement,
Guillaume.
Bonsoir à tous,
Quand on n'a pas la fonction kivabien, il faut la construire soi même.
Un exemple d'appel :
Ici, on recherche la 10ème plus grande valeur de 3 zones réparties sur 3 onglets.
On met autant de zones qu'on le souhaite, séparées pas des virgules chez moi mais sans doute par des points-virgules chez les gens normaux.
Voici la macro :
cordialement
Quand on n'a pas la fonction kivabien, il faut la construire soi même.
Un exemple d'appel :
=GRANDE_VALEUR(10,A6:A9,Feuil2!C12:C15,Feuil3!F6:F9)
Ici, on recherche la 10ème plus grande valeur de 3 zones réparties sur 3 onglets.
On met autant de zones qu'on le souhaite, séparées pas des virgules chez moi mais sans doute par des points-virgules chez les gens normaux.
Voici la macro :
Function GRANDE_VALEUR(k As Integer, ParamArray args() As Variant)
Dim tablo()
n = 0
For Each vArea In args
n = n + vArea.Cells.Count
Next
ReDim tablo(n)
Dim i As Integer
i = 0
For Each vArea In args
For Each zone In vArea
For Each vcell In zone
tablo(i) = vcell.Value
i = i + 1
Next
Next
Next
Call TriDécroissant(tablo(), 0, n - 1)
GRANDE_VALEUR = tablo(k - 1)
End Function
Sub TriDécroissant(a(), gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: D = droi
Do
Do While a(g) > ref: g = g + 1: Loop
Do While ref > a(D): D = D - 1: Loop
If g <= D Then
temp = a(g): a(g) = a(D): a(D) = temp
g = g + 1: D = D - 1
End If
Loop While g <= D
If g < droi Then Call TriDécroissant(a, g, droi)
If gauc < D Then Call TriDécroissant(a, gauc, D)
End Sub
cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour JvDo,
Merci pour ce super retour.
Cependant, avec la fonction grande.valeur, je pouvais faire la somme des 5 plus grandes valeurs avec la fonction suivante :
SOMME(GRANDE.VALEUR(C10:AP10);LIGNE(INDIRECT("1:"&5)))
Avec la fonction transmise, je n'arrive plus à rajouter la partie LIGNE(...).
Merci encore.
Cordialement,
Guillaume.
Merci pour ce super retour.
Cependant, avec la fonction grande.valeur, je pouvais faire la somme des 5 plus grandes valeurs avec la fonction suivante :
SOMME(GRANDE.VALEUR(C10:AP10);LIGNE(INDIRECT("1:"&5)))
Avec la fonction transmise, je n'arrive plus à rajouter la partie LIGNE(...).
Merci encore.
Cordialement,
Guillaume.
Bonjour le fil,
Pour rester dans les formules, nomme la plage de données exemple titi et utilise la formule grande valeur sur la feuille de ton choix, exemple pour la troisième valeur
=GRANDE.VALEUR(titi;3)
Pour rester dans les formules, nomme la plage de données exemple titi et utilise la formule grande valeur sur la feuille de ton choix, exemple pour la troisième valeur
=GRANDE.VALEUR(titi;3)
Bonjour à tous,
essaye ceci :
J'ai mis petite_valeur pour le même prix.
cordialement
essaye ceci :
Function GRANDE_VALEUR(vk, ParamArray args() As Variant)
Dim tablo()
n = 0
For Each vArea In args
n = n + vArea.Cells.Count
Next
ReDim tablo(n)
Dim i As Integer
i = 0
For Each vArea In args
For Each zone In vArea
For Each vcell In zone
tablo(i) = vcell.Value
i = i + 1
Next
Next
Next
If IsArray(vk) Then
For k = LBound(vk) To UBound(vk)
GRANDE_VALEUR = GRANDE_VALEUR + WorksheetFunction.Large(tablo, vk(k, 1))
Next
Else
GRANDE_VALEUR = WorksheetFunction.Large(tablo, vk)
End If
End Function
***********************************************************
Function PETITE_VALEUR(vk, ParamArray args() As Variant)
Dim tablo()
n = 0
For Each vArea In args
n = n + vArea.Cells.Count
Next
ReDim tablo(n)
Dim i As Integer
i = 0
For Each vArea In args
For Each zone In vArea
For Each vcell In zone
tablo(i) = vcell.Value
i = i + 1
Next
Next
Next
If IsArray(vk) Then
For k = LBound(vk) To UBound(vk)
PETITE_VALEUR = PETITE_VALEUR + WorksheetFunction.Small(tablo, vk(k, 1))
Next
Else
PETITE_VALEUR = WorksheetFunction.Small(tablo, vk)
End If
End Function
J'ai mis petite_valeur pour le même prix.
cordialement