Bonjour,
j'ai déjà posté une autre discussion sur un problème incompris de fonctionnement de classe. Pour l'instant aucune réponse.
En creusant un peu je me suis rendu compte que le problème pouvait éventuellement venir du constat suivant : si je crée un objet via OLEObjects.Add (dans mon cas contrôle image) et que je l'affecte à une variable objet déclarée dans le module :
- l'objet est bien créé
- je peux modifier les attributs de mon objet (l'image, le formatage,le nom) via la variable objet créée
- mais à la fin la variable est vide (type Empty) même si cette dernière est déclarée en en tête de module
par contre si je relance ma macro et que j'affecte l'objet créé dans la feuille à la même variable objet, la variable contient bien cet objet.
Dans le cas d'une affectation à un objet d'une classe personnalisée où je déclare des propriétés, des évènements on comprend alors aisément que tout cela ne fonctionne pas puisqu'à la sortie de la macro l'objet est vide.
Voilà le code test où la variable objet dont je parle est imgtest.
j'ai essayé tout un tas de combinaison dans les déclarations, en affectant la variable en 2 étapes (en passant par un nom intermédiaire déclaré dans la sub mais rien n'y fait. J'ai toujours le même comportement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Public imgtest As msforms.Image Sub create_onecard() On Error Resume Next If Feuil4.OLEObjects("testcard").Object Is Nothing Then ' Set imgtest = Feuil4.OLEObjects.Add _ (ClassType:="Forms.Image.1", Left:=100, Top:=200, Width:=155.25, Height:=240.75).Object ' imgtest.Name = "testcard" With imgtest.Object .Picture = LoadPicture("c:\image\CQ038F.gif") .PictureAlignment = fmPictureAlignmentCenter .BackStyle = fmBackStyleTransparent .BorderStyle = fmBorderStyleNone .PictureSizeMode = fmPictureSizeModeZoom End With Else Set imgtest = Feuil4.OLEObjects("testcard").Object End If ' End Sub
Si vous avez une idée. Merci d'avance.







Répondre avec citation
Partager