Re-bonjour,
J'ai obtenu beaucoup de réponses à mon sujet et j'en remercie les auteurs. Malheureusement j'avais cherché à simplifier l'exposé du problème et je ne peux pas exploiter ces réponses. Mon Array principal est en fait constitué de Sous-Arrays composé de 3 Integers. Revoici donc l'intégralité du problème re-posé, plus aucune simplification cette fois-ci :
Function RetirerElementArray(ArraySource, SousArray)
Dim ArrayResultat()
cpt = -1
For i = 0 To UBound(ArraySource)
asi = ArraySource(i)
If asi(0) <> SousArray(0) And asi(1) <> SousArray(1) And asi(2) <> SousArray(2) Then
cpt = cpt + 1
ReDim Preserve ArrayResultat(cpt)
ArrayResultat(cpt) = ArraySource(i)
End If
Next i
RetirerElementArray = ArrayResultat
End Function
Sub test()
r = RetirerElementArray(Array(Array(2, 5, 8), Array(40, 3, 803), Array(51, 12, 29), Array(10, 0, 48)), Array(40, 3, 803))
Stop
' r = Array(Array(2, 5, 8), Array(51, 12, 29), Array(10, 0, 48))
End Sub
Sachant que RetirerElementArray peut être répétée des dizaines voire des centaines de milliers de fois et que ArraySource comporte presque autant d'éléments, cette procédure peut s'avérer très coûteuse en temps. SousArray est toujours un Array composé de 3 Integers
Dans ce Post Klin89 propose une alternative intéressante à
If asi(0) <> SousArray(0) And asi(1) <> SousArray(1) And asi(2) <> SousArray(2) Then
Mais si elle est d'une écriture plus simple et plus belle elle s'avère plus coûteuse en temps aussi je pense que cette ligne-là ne peut pas être optimisée.
J'espère que je n'aurais pas dissuadé les bonnes volontés pour m'aider avec mon erreur initiale.
Avec gratitude