treza88
XLDnaute Occasionnel
bonjour à tous,
j'utilise une fonction à l'intérieur avec un Array dynamique à une dimension "sdba", qui a chaque fois que j'appelle cette fonction utilise ce tableau, mais qui n'a pas toujours la même longueur.
A mon premier appel tout ce passe bien, mais après j'ai une erreur "l'indice n'appartient à la sélection" sur la ligne suivante :
j'ai bien essayé d'utiliser Erase pour pouvoir le redimensionner, mais j'ai toujours cette erreur.
Voici le code de fonction :
Pouvez vous me dire ce qui cloche, car de mon coté je ne comprend pas.
Je me dit bien que c'est a cause du changement de longueur du tableau, mais avec Erase je suis sensé être capable de le redimensionner ?
j'utilise une fonction à l'intérieur avec un Array dynamique à une dimension "sdba", qui a chaque fois que j'appelle cette fonction utilise ce tableau, mais qui n'a pas toujours la même longueur.
A mon premier appel tout ce passe bien, mais après j'ai une erreur "l'indice n'appartient à la sélection" sur la ligne suivante :
VB:
ReDim Preserve sdba(LBound(sdba) To UBound(sdba) + 1)
j'ai bien essayé d'utiliser Erase pour pouvoir le redimensionner, mais j'ai toujours cette erreur.
Voici le code de fonction :
Code:
Function SansDoublonsArray(a)
Set mondico = CreateObject("Scripting.Dictionary")
Dim sdba() As Variant
Erase sdba
mondico.CompareMode = vbTextCompare
For Each c In a
If Not mondico.Exists(c) And c <> "" And c <> "?" Then
mondico(c) = ""
End If
Next c
If mondico.Count <> 0 Then
sdba = Application.Transpose(mondico.keys)
ReDim Preserve sdba(LBound(sdba) To UBound(sdba) + 1)
Else
ReDim sdba(1 To 1)
End If
sdba(UBound(sdba)) = "Pilotage"
SansDoublonsArray = sdba
End Function
Pouvez vous me dire ce qui cloche, car de mon coté je ne comprend pas.
Je me dit bien que c'est a cause du changement de longueur du tableau, mais avec Erase je suis sensé être capable de le redimensionner ?