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

Microsoft 365 Aide explication de formule svp

Atlas85200

XLDnaute Nouveau
Bonjour,

Je suis en train de reporter des données d'une feuille à autre autre selon un critère, j'ai trouvé une formule mais j'ai un peu de mal à l'apprivoiser :


Je la comprends jusqu'à LIGNE(A), je ne comprends plus

Pouvez me l'expliquer svp ?

Merci par avance
 
Solution
Bonjour à tous,
Pour le meme resultat que la formule que tu proposes, utilises plutot min.si.ens() ou si tu veux la liste par ordre croissant,
=Trier(filtre(Répertoire!$A$2:$A$10;Répertoire!$C$2:$C$10="m"))
la formule que tu as trouvée est devenue obsolète pour les nouvelles version d'excel>2019

Crdlmt

Dranreb

XLDnaute Barbatruc
Bonsoir.
La partie un peu délicate à comprendre c'est l'expression LIGNE(Répertoire!$A$2:$A$10)/(Répertoire!$C$2:$C$10="m"). Elle renvoie un tableau d'une colonne contenant un mélange de numéros de lignes des cellules de Répertoire!$C$2:$C$10 valant "m" et de valeurs d'erreurs #DIV0!. Après, le numéro 15 de la fonction AGREGAT en donnes les petites valeurs, les classe donc, et son option 6 en exclut les fameuses valeurs d'erreurs #DIV/0!. LIGNE(A1) donne je pense le rang désiré de la petite valeur. FILTRE(Répertoire!$A$2:$A$10;Répertoire!$C$2:$C$10="m") devrait donner le même résultat. Alors sur une version d'Excel ne disposant pas de cette fonction, comme la mienne d'ailleurs, je préfèrerais utiliser une fonction perso FILTR écrite en VBA :
VB:
Function FILTR(ByVal TDonn, ByVal TCond)
   Dim LE&, LS&, C&
   If TypeOf TDonn Is Range Then TDonn = TDonn.Value
   If TypeOf TCond Is Range Then TCond = TCond.Value
   For LE = 1 To UBound(TDonn, 1)
      If TCond(LE, 1) Then
         LS = LS + 1
         For C = 1 To UBound(TDonn, 2)
            TDonn(LS, C) = TDonn(LE, C)
            Next C: End If: Next LE
   Do While LS < UBound(TDonn, 1)
      LS = LS + 1
      For C = 1 To UBound(TDonn, 2)
         TDonn(LS, C) = ""
         Next C: Loop
   FILTR = TDonn
   End Function
 
Dernière édition:

djidji59430

XLDnaute Barbatruc
Bonjour à tous,
Pour le meme resultat que la formule que tu proposes, utilises plutot min.si.ens() ou si tu veux la liste par ordre croissant,
=Trier(filtre(Répertoire!$A$2:$A$10;Répertoire!$C$2:$C$10="m"))
la formule que tu as trouvée est devenue obsolète pour les nouvelles version d'excel>2019

Crdlmt
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…