Création automatique d'instances de classe
Bonjour,
J'ai créé un outil en VBA qui à l'aide d'un bouton va récupérer un onglet d'un fichier Excel et le colle dans mon fichier dans un onglet "Data".
Dans cet onglet "Data", une ligne correspond à une vidéo. On a plusieurs colonnes dont une qui informe du format de la vidéo. Les macros que j'ai codé opèrent certains traitements sur le fichier, qui ne sont pas intéressants pour la résolution de mon problème, donc je ne m'étend pas.
En outre j'ai créé un module de classe "Vidéo" et je souhaite créer autant d'instances de la classe vidéo qu'il n'y a de type de format dans mon onglet "Data".
Seulement voilà, en fonction du fichier que je vais chercher, le nom et le nombre de formats différents ne seront jamais les mêmes. Je peux par exemple avoir :
- fichier 1, formats de vidéo présents : "chien_65s", "chat_98s"
- fichier 2, formats de vidéo présents : "perroquet_34s", "lion_72s", "loup_86s", "zoo_250s"
J'aimerais que un format vidéo du fichier = un objet Vidéo
Je suis capable d'afficher une liste contenant les formats (uniques) présents dans le fichier. Je voulais faire une boucle sur cette liste pour pouvoir créer et instancier mes objets, mais je bloque...
Je sais que mon code ne peut pas fonctionner, car on ne déclare pas ses variables dans une boucle, et une variable ne peut pas tout faire. C'est justement mon problème, je vous mets le code pour que vous puissiez avoir l'idée du code que je veux écrire :
Sub Classe_Vidéo()
'Là où se trouvent les données
Worksheets("Data").Activate
Dim RngCell As Range
Dim dernLigne As Integer
'Pour boucler jusqu'à la dernière ligne de ma liste
dernLigne = Range("A" & Rows.Count).End(xlUp).Row
Dim nom_Objet As String
Dim i As Integer
'Les noms de mes objets seront oVideo_1, oVideo_2, etc
nom_Objet = "oVideo_"
i = 1
' Dans la colonne x se trouve la liste de mes formats présents dans la fichier
For Each RngCell In Range("X2:X" & dernLigne).Cells
nom_Objet = nom_Objet & i
Dim nom_Objet As cls_video
Set nom_Objet = New cls_video
nom_Objet.sNom_video = RngCell.Value
nom_Objet.sCpt_video = 0
nom_Objet.sMax_video = 0
i = i + 1
Next RngCell
End subSi quelqu'un a déjà eu ce cas de figure, je suis preneuse !
Merci d'avance :)
Hello,
ça me parait compliqué ce que tu cherches à faire par rapport à ton besoin
mais soit :
' dans le module de classe nommé "clsvideo"
Public FormatVideo As String
'Dans un module standard
Dim Video(1 To 2) As New clsvideo
dim i as byte
Video(1).FormatVideo = "Format1"
Video(2).FormatVideo = "Format2"
for i = 1 to 2
debug.print Video(i).FormatVideo
next i