XL 2016 la fonction FILTRE que je n'ai pas !

LEPATOCHE

XLDnaute Occasionnel
Bonsoir a tous dans excel je n'ai pas la fonction FILTRE puis je l'avoir et comment ont fait pour l'avoir merci de votre aide ! la marche a suivre exactement dans la mesure du possible moi j'ai excel 2016 que j'ai acheter !
 

Natwork77

XLDnaute Nouveau
Bonsoir.
D'après ce que j'en ai vu, elle n'est guère compliquée à écrire en VBA. Mais il n'accepte pas que je l'appelle FILTRE. Alors j'ai enlevé le 'E' à la fin :
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
À valider en matriciel, en principe …
Merci c'est tellement utile dans ma version et mon projet !
 

Genedag

XLDnaute Nouveau
Bonjour!

Merci beaucoup Dranreb pour la fonction en VBA! J’ai aussi un problème à faire propager la formule pour obtenir toutes les réponses possible. Quand je fais ctrl+shift+enter pour valider la plage, j’obtiens toujours la même réponse dans chaque cellule de la plage.
As-tu une idée de ce que je dois faire?
Merci!
 

Dranreb

XLDnaute Barbatruc
Bonjour.
S'il s'agit d'une modification, il faut sélectionner l'intégralité de la plage matricielle, cliquer dans la barre de formule pour la mettre en édition et ensuite seulement valider en matriciel. La nouvelle plage peut à la rigueur être plus grande que l'ancienne mais elle ne doit pas être plus petite. Si vous ne sélectionnez pas une plage contenant au moins toute l'ancienne, il vous dit que vous ne pouvez pas modifier une partie de matrice.
En principe on ne "propage" pas une formule matricielle comme une formule classique, sauf si elle n'est que sur une ligne et qu'on veut qu'elle soit intégralement recalculée sur d'autres pour leurs seules propres lignes chaque fois.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Solution indiquée poste précédent.
Résumé: sur des versions autre que 365, une formule matricielle ne se valide pas sur une seule cellule mais sur toute la plage devant la contenir, et pour laquelle elles n'est évaluée qu'une seule fois.
 

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander