Ok, j'ai compris.
Voici un exemple que tu peux placer dans un module. A toi d'arranger ça à ta sauce.
Option Explicit
Private Const PASALLOC = 1
Private Type tabCde
article As Variant
qte As Long
End Type
Public cdeVisu() As tabCde
Private max As Long
Private Sub gerePasAlloc(ByVal ind As Long)
If ind > max Then
max = max + PASALLOC
ReDim Preserve cdeVisu(max)
End If
End Sub
Public Sub setArticle(ByVal ind As Long, ByVal str As Variant)
Call gerePasAlloc(ind)
cdeVisu(ind).article = str
End Sub
Public Sub setQte(ByVal ind As Long, ByVal str As Long)
cdeVisu(ind).qte = str
End Sub
Public Function getArticle(ByVal ind As Long) As Variant
getArticle = cdeVisu(ind).article
End Function
Public Function getQte(ByVal ind As Long) As Long
getQte = cdeVisu(ind).qte
End Function
bon courage
;o)
Polux