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
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
et j'obtiens le message suivant
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
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 ?
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 olrs(olrs.Count).Range.Cells(1, 1).Value
Partager