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

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 !

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
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:
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
 
- 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

  • Question Question
Réponses
2
Affichages
66
Réponses
5
Affichages
116
Réponses
9
Affichages
443
  • Question Question
Microsoft 365 Formule excel
Réponses
7
Affichages
171
Réponses
2
Affichages
140
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…