Pas du tout, la fonction personnalisée que notre ami propose c'est FILTR.Le e à la fin de Filtr devrait résoudre le problème.
Function FiltreVBA(tableau, critere(), defaut)
Dim ub1&, ub2%, i&, n&, j%
tableau = tableau
ub1 = UBound(tableau, 1)
ub2 = UBound(tableau, 2)
For i = 1 To ub1
If critere(i, 1) Then
n = n + 1
For j = 1 To ub2
tableau(n, j) = tableau(i, j)
Next j
End If
Next i
For i = n + 1 To ub1
For j = 1 To ub2
tableau(i, j) = defaut
Next j, i
FiltreVBA = tableau 'matrice
End Function
merci beaucoup pour votre aideJ'en profite pour simplifier ma fonction FiltreVBA :
Application.Caller et la variable resu() étaient inutiles.Code:Function FiltreVBA(tableau, critere(), defaut) Dim ub1&, ub2%, i&, n&, j% tableau = tableau ub1 = UBound(tableau, 1) ub2 = UBound(tableau, 2) For i = 1 To ub1 If critere(i, 1) Then n = n + 1 For j = 1 To ub2 tableau(n, j) = tableau(i, j) Next j End If Next i For i = n + 1 To ub1 For j = 1 To ub2 tableau(i, j) = defaut Next j, i FiltreVBA = tableau 'matrice End Function
du coup, j'ai une autre interrogation. Dans le tableau , les cellules d'une même ligne comportent des éléments différents alors que la formule est la même pour chaque cellule. J'ai essayé de reproduire ce schéma dans un autre fichier mais les cellules ont toutes la même valeur.merci beaucoup pour votre aide
Effacez d'abord toute la plage H3:L9.Bonjour pouvez vous me dire comment agrandir la zone matrice H3:L9 ?