Supprimer une valeur dans une Array

Bonjour,

est il possible de supprimer un nombre défini de valeurs d'une Array ? Par exemple :

Ubound(myArray) = 10

supprimer myArray(3) et myArray(7)

merci

Bonjour,

Pour une Array écrite en "dur" dans le code c'est pas possible.

Mais tu pourrais travaillé avec un tableau intermédiaire.

A+

Merci Lermite,

L'array stocke un nombre de variables non défini à l'avance.

Lorsqu'une valeur de mon array doit être supprimée, je lui attribue la valeur ""

mais je souhaiterais voir la valeur de Ubound(myArray) diminuer d'autant.

Huum, ton Array n'est pas une Array mais un tableau...

Il y a plusieurs façons de faire, entre autre..

Sub SupprimeValeur()
Dim i As Integer, g As Integer
'Pour le test
Dim TB(20)
    For i = 0 To 20: TB(i) = i + 20: Next i
    i = 0
'Supprimer ERG 7 et 13
Dim Tablo, S As String
    ReDim Tablo(0)
    Do While i <= UBound(TB)
        Tablo(g) = TB(i)
        S = S & Tablo(g) & " , "
        i = i + 1: g = g + 1: If i = 7 Or i = 13 Then i = i + 1
        ReDim Preserve Tablo(g)
    Loop
    MsgBox S
End Sub

Une façon plus simple mais avec un seule suppression à la fois.

Sub SuppErg(TB(), ERG As Integer)
Dim i As Integer
    For i = ERG To UBound(TB) - 1
        TB(i) = TB(i + 1)
    Next i
    ReDim Preserve TB(i - 1)
End Sub

Tu passe ton tableau en argument et le N° de l'ERG que tu veux supprimer.

Attention, si tu veux supprimer par exemple le 4 et le 13 tu dois d'abords supprimer le 13 et ensuite le 4, si tu fais l'inverse, le 13 n'est plus à la même place.

Une sub pour démontrer..

'Pour tester SuppErg
Sub Test()
Dim i As Integer, S As String
'Pour le test
Dim TB()
    ReDim TB(20)
    For i = 0 To 20: TB(i) = i + 20: Next i
    SuppErg TB(), 13
    For i = 1 To UBound(TB)
        S = S & TB(i) & " , "
    Next i
    MsgBox S
End Sub

A+

Merci encore Lermite...

j'en conclus donc qu'il n'existe pa une expression simple qui ressemblerait à une ligne du genre myArray(3).Delete.

Beh non, pas de fonction directe, mais avec les quelque lignes de la fonction ci-dessus suffit de faire..

    SuppErg MyArray(), 3

C'est pas compliquer

A+

Bonjour,

L'objet Dictionary permet la suppression avec la méthode Delete

Ceuzin

Je vais regarder ça Ceuzin.

Thx

Re,

Avec l'objet Dictionnary ca revient au même que la première fonction que j'ai proposé.. SupprimeValeur peut-être un chouiat simplifiée.

Et persiste sur ma solution 2

A+

Rechercher des sujets similaires à "supprimer valeur array"