Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Array / UDT : tableau de type défini par l'utilisateur

2 réponses
Avatar
jean-paul.bataille
Bonjour,

Je d=E9sire utiliser un type personnel "objetAccess" , d=E9fini comme
ceci
Type objetAccess
strNomObjet As String
dateCr=E9ation As Date
dateR=E9vision As Date
End Type

Puis dans une routine je veux affecter des valeurs aux divers =E9l=E9ments
de mon type pour constituer un tableau listeObjet "array"

Sub tst_USD_et_array()

Dim UnObjet As objetAccess
Dim ListeObjet() As Variant

UnObjet.strNomObjet =3D "tata"
UnObjet.dateCr=E9ation =3D #1/2/2009#
UnObjet.dateR=E9vision =3D #12/2/2009#

MsgBox UnObjet.strNomObjet & " " & Format(UnObjet.dateCr=E9ation, "dd
mmm yy")

'?????
ListeObjet(1) =3D UnObjet
MsgBox ListeObjet(1).strNomObjet & """" & ListeObjet(1).dateCr=E9ation
'??????

End Sub

Je planche et s=E9che sur comment placer les valeurs dans le tableau.

merci de votre collaboration
Jean-Paul

2 réponses

Avatar
MichDenis
Bonjour Jean-Paul,


Déclaration de la variable personnalisée dans
le haut du module
'--------------------------------------
Type objetAccess
strNomObjet As String
dateCréation As Date
dateRévision As Date
End Type
'--------------------------------------


Il s'agit simplement de définir la variable "UnObject" comme
un tableau (array) en indiquant les bornes de ce dernier.
IL existe différentes manières de définir les bornes de ce dernier !
'--------------------------------------
Sub tst_USD_et_array()

Dim UnObjet(1 To 10) As objetAccess
Dim ListeObjet() As Variant

For a = 1 To 10
UnObjet(a).dateCréation = #1/2/2009#
UnObjet(a).dateRévision = #12/2/2009#
UnObjet(a).strNomObjet = "tata"
Next

End Sub
'--------------------------------------

Dans l'exemple suivant, supposons que vous avez une plage de données
A1:C10 dont vous voudriez mettre les valeurs dans votre tableau :

'----------------------------------------------
Sub tst_USD_et_array()

Dim UnObjet() As objetAccess
Dim A As Long, R As Range

With Range("A1:C10")
ReDim UnObjet(1 To .Rows.Count)
For Each R In .Rows
A = A + 1
UnObjet(A).dateCréation = R.Cells(A, 1).Value
UnObjet(A).dateRévision = R.Cells(A, 2).Value
UnObjet(A).strNomObjet = R.Cells(A, 3).Value
Next
End With

MsgBox UnObjet(1).strNomObjet & " " & _
Format(UnObjet(1).dateCréation, "dd mmm yy")
End Sub
'----------------------------------------------


Il y a toujours l'option de définir la taille du tableau à chaque fois
que l'on veut y entrer une nouvelle valeur
'------------------------------------------------
Sub tst_USD_et_array()

Dim UnObjet() As objetAccess
Dim A As Long, R As Range

With Range("A1:C10")
For Each R In .Rows
A = A + 1
ReDim Preserve UnObjet(1 To A)
UnObjet(A).dateCréation = R.Cells(A, 1).Value
UnObjet(A).dateRévision = R.Cells(A, 2).Value
UnObjet(A).strNomObjet = R.Cells(A, 3).Value
Next
End With

MsgBox UnObjet(1).strNomObjet & " " & _
Format(UnObjet(1).dateCréation, "dd mmm yy")
End Sub
'------------------------------------------------


a écrit dans le message de groupe de discussion :

Bonjour,

Je désire utiliser un type personnel "objetAccess" , défini comme
ceci
Type objetAccess
strNomObjet As String
dateCréation As Date
dateRévision As Date
End Type

Puis dans une routine je veux affecter des valeurs aux divers éléments
de mon type pour constituer un tableau listeObjet "array"

Sub tst_USD_et_array()

Dim UnObjet As objetAccess
Dim ListeObjet() As Variant

UnObjet.strNomObjet = "tata"
UnObjet.dateCréation = #1/2/2009#
UnObjet.dateRévision = #12/2/2009#

MsgBox UnObjet.strNomObjet & " " & Format(UnObjet.dateCréation, "dd
mmm yy")

'?????
ListeObjet(1) = UnObjet
MsgBox ListeObjet(1).strNomObjet & """" & ListeObjet(1).dateCréation
'??????

End Sub

Je planche et séche sur comment placer les valeurs dans le tableau.

merci de votre collaboration
Jean-Paul
Avatar
jean-paul.bataille
Toujours prêt à donner un coup de main,
merci MichDenis

Je regarde tes ^propositions" dés que j'ai une minute.
Car, il me semble, que la réponse cherchée est celle fournie..

Merci MichDenis