Bonjour Patrice,
Je suis d'accord avec la première partie de ta réponse, mais pas avec la seconde.
Ce n'est pas tout à fait exact: Tu as raison, on peut utiliser Redim sur un Dim, mais uniquement à la condition que le Dim concerne un tableau sans dimension, éventuellement typé, ou un variant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub Test() Dim t ' Dim u() ReDim t(5) ReDim u(5) End Sub
ReDim n'est pas une instruction de déclaration: Si! ReDim est une instruction de déclaration ET, en même temps, une instruction d'exécution. Si l'on observe l'image suivante, on verra que les variables t et u existent dès l'entrée dans la fonction et sont déclarées de manière identique comme des tableaux de variant, alors même que dim u() est inexistant. C'est la preuve que Redim u(5) a bien déclaré la variable et en quelque sorte "contient" un Dim u() implicite. Redim est donc bien une instruction de déclaration.
Elle est, en plus, une instruction d'exécution qui modifiera les dimensions de u au moment de l'exécution de la ligne Redim...
On notera également que, si l'on peut redimensionner un tableau sans le retyper (il garde le type du dim de départ), on ne peut pas modifier le type du tableau lors du redimensionnement lorsqu'il est déclaré comme un tableau par un Dim ( par exemple, Dim t() ).
Pour pouvoir modifier à volonté le type du tableau lors du redimensionnement, il faut qu'il ait été déclaré comme Variant
![]()
Partager