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

Le
jean-paul.bataille
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #19071661
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
'------------------------------------------------



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
jean-paul.bataille
Le #19076001
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
Publicité
Poster une réponse
Anonyme