Dans mon workbook , j'ai une worksheet qui contient des "tableaux" (tableaux au sens de l'IHM utilisateur final de l'application Excel comme illustré ci apres

Nom : Excel-Table.PNG
Affichages : 7472
Taille : 29,1 Ko
Ces tableaux (Tables en anglais) sont représentés par un object de classe ListObject que l'on trouve à l'aide de la propriété ListObjects de la worksheet

Je souhaite gérer le contenu de chaque tableau via une UserForm pour ajouter supprimer un éléments de ce tableau (le contenu de chaque Tableau est dynamique et les tableaux sont créés depuis la UserForm)
Je ne parviens pas à utiliser la propriété Resize pour dimensionner ce tableau au nombre d'elements que je souhaite y stocker (mise a jour du tableau)
J'ai essaye dans le code qui suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
     loTable.Resize loTable.Cells(1, 1)   ' loTable est un tableau a une colonne
et j'obtiens le message suivant
Nom : vba-error-msgbox.PNG
Affichages : 6268
Taille : 2,5 Ko

Alors que la doc indique que ca existe https://msdn.microsoft.com/en-us/lib.../ff838369.aspx

Dans le code qui suit loTable est un Tableau et strItems un tableau VBA (array) contenant les valeurs a stocker dans le Tableau (Table)
Je le fais un peu bourin en effacant une a une les lignes puis j'enregistre a nouveau ligne a ligne
Pour redimensionner je pensais qu'il y aurait peut etre un moyen de la faire en une instruction.
De plus le code est particulièrement lent (on voit les lignes disparaitre/apparaitre une a une - c'est acceptable pour une vingtaine d'elements pour pres de 200 ca va pas le faire)
Avez vous une soluce ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Sub ViewManager_SaveViewAttribute(ByRef strItems() As String, ByRef loTable As ListObject)
    Dim i As Integer
    Dim olrs As ListRows
 
    Set olrs = loTable.ListRows
    For i = olrs.Count To 1 Step -1
        olrs(i).Delete
    Next i
    For i = 1 To UBound(strItems)
            olrs.Add
            olrs(olrs.Count).Range.Cells(1, 1).Value = strItems(i)
            Debug.Print ">" & strItems(i) & " saved to table ''" & loTable.Name & "''"
    Next i
End Sub
Idem pour stocker la valeur je trouve l'instruction suivante un peu lourde
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
olrs(olrs.Count).Range.Cells(1, 1).Value