Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

recherche grde valeur en Vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

paskikic

XLDnaute Occasionnel
slt au Xlnautes

voici mon pb, je souhaite retrouver les 3 plus grande valeur d une colonne B et les renvoyer sur la colonne G (pour l exemple), mais il arrive que deux personnes ai la meme valeur ( de colonne B ) donc ma colonne C sert a departager les ex aequo.

j ai trouver un code Vba qui marche pas mal mais ne me donne pas les ex aequo; il reste sur la 1ere valeur ex aequo.


pourriez vous eclairer mon cerveau.....
 

Pièces jointes

Re : recherche grde valeur en Vba

bonjour,

une solution qui tient du bidouillage:

Code:
Range("A2:C20").Sort Key1:=Range("B2"), Order1:=xlDescending
For i = 1 To 3
    Cells(i, 7) = Cells(i + 1, 1)
Next
Range("A2:C20").Sort Key1:=Range("A2"), Order1:=xlAscending
A+
 
Re : recherche grde valeur en Vba

merci paf et phillipe

phillpe je veux passer par le vba car je ne suis pas seule a utiliser cette partie de feuille et les formules s efface vite

quand a la formule de paf il faut a chaque fois retrier la colonne A ce que je voudrais eviter mais merci quand meme

y a t il d autre xlnautes d ame charitable

merci a tous
 
Re : recherche grde valeur en Vba

Re-bonjour

je ne suis pas seule a utiliser cette partie de feuille et les formules s efface vite
il suffit simplement de protéger la feuille avec mot de passe pour interdire la sélection, modification, effacement des cellules concernées

l'utilisation d'une macro n'offre pas plus de garantie de sécurité

voir fichier joint: le mot pour déprotéger la feuille est toto


à+
Philippe
 

Pièces jointes

Re : recherche grde valeur en Vba

Bonjour paskikic, Paf, Philippe,

1) Par formule matricielle sur G1:G3 :

Code:
=INDEX(A3:A18;EQUIV(PETITE.VALEUR(RANG(B3:B18;B3:B18)-0,000000001*C3:C18;LIGNE(1:3));RANG(B3:B18;B3:B18)-0,000000001*C3:C18;0))
Toute la plage étant sélectionnée, valider par Ctrl+Maj+Entrée.

2) Par macro VBA :

Code:
Sub grd_val()
Dim f As String
f = "RANK($B$3:$B$18,$B$3:$B$18)-0.000000001*$C$3:$C$18"
f = "=INDEX($A$3:$A$18,MATCH(SMALL(" & f & ",ROW($1:$3))," & f & ",0))"
[G1:G3].FormulaArray = Application.ConvertFormula(f, xlA1, xlR1C1)
[G1:G3].Value = [G1:G3].Value 'facultatif, supprime les formules
End Sub
Elle entre tout simplement la même formule matricielle sur G1:G3.

Voir les deux fichiers joints.

A+
 

Pièces jointes

Re : recherche grde valeur en Vba

Re,

Si vous trouvez que ma macro est du bidouillage c'est que vous êtes vraiment allergique aux formules.

Vous devriez vous soigner 😀

Pour peaufiner on peut rendre le tableau source dynamique avec des noms définis.

Avec la solution VBA la macro est un peu plus simple :

Code:
Sub grd_val()
Dim f As String
f = "RANK(Position,Position)-0.000000001*Points"
f = "=INDEX(Equipes,MATCH(SMALL(" & f & ",ROW(R1:R3))," & f & ",0))"
[G1:G3].FormulaArray = f
[G1:G3] = [G1:G3].Value 'facultatif, supprime les formules
End Sub
Fichiers (2)

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
571
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…