Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Propriété (name) à changer par programme

flamel

XLDnaute Nouveau
Bonjour.

Existe-t-il un moyen de modifier la Propriété ' (Name) ' par programmation pour des Labels ou des Commandbuttons ?

Je crée des Labels sur UserForm par programme, mais il ne répondent pas au clic et je ne peux pas vérifier leurs Propriétés, donc le (Name) sous lequel ils sont réellement identifiés dans la machine.
A la fermeture de l' UserForm, on ne les retrouvent pas sur celui-ci comme on retrouve les Label créés individuellement.
Les codes s'inscrivent pourtant bien et ne s'effacent pas à la fermeture de l'UserForm.

Merci beaucoup si solution, car je sèche depuis longtemps la-dessus.

flamel
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Flamel, le Forum

J'ai retrouvé ce code aussi que j'avais fait pour ce Forum pour des actions de Click sur les Labels générés par programmation et comment les renommer également :



Bonne Programmation !
[ol]@+Thierry[/ol]
 

flamel

XLDnaute Nouveau
Bonjour Thierry.

A quoi correspond le (3) entre parenthèses dans la ligne :

Set ObjUSF = ThisWorkbook.VBProject.VBComponents.Add(3)

Je manque de doc là-dessus et je ne trouve rien dans l'aide de MS.
Y a-t-il un livre avec index assez complet à conseiller ?

Ton prgramme marche bien, quoiqu'il crée chaque fois un nouvel userfrom, mais je n'arrive pas à l'adapter à mon fichier, trop important pour l'envoyer. Je devrais faire un exemple résumé.

Je voudrais reprendre dans ton fichier la partie de création de Labels seulement et la greffer dans mon fichier. Est-ce possible ?

Merci pour ton aide.

@+
flamel
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Flamel, le Forum

Désolé pour ce retard de réponse.

Pour ta dernière question au sujet du (3), en fait en tatonnant j'ai trouvé tout ceci :

Sub AddingVBComponents()
Dim ObjUserForm As Object
Dim ObjModuleStandard As Object
Dim ObjModuleDeClasse As Object


Set ObjModuleStandard = ThisWorkbook.VBProject.VBComponents.Add(1)
Set ObjModuleDeClasse = ThisWorkbook.VBProject.VBComponents.Add(2)
Set ObjUserForm = ThisWorkbook.VBProject.VBComponents.Add(3)

End Sub

Dans l'aide VBA je peux lire ceci :

Vous pouvez utiliser les constantes suivantes pour l'argument component :

Constante Description
vbext_ct_ClassModule Ajoute un module de classe à la collection.
Vbext_ct_MSForm Ajoute une feuille à la collection.
vbext_ct_StdModule Ajoute un module standard à la collection.


Par conséquent on peut également écrire ceci, mais il faudra activer en plus de la Réference VB à 'Microsoft Form 2.0 Object Library' une Référence VB à 'Microsoft Visual Basic For Applications Extensibility 5.3'


Et on pourra écrire la même chose comme ceci :

Sub AddingVBComponentsWithConstanteNames()
Dim ObjUserForm As Object
Dim ObjModuleStandard As Object
Dim ObjModuleDeClasse As Object


'NB Nécessite aussi la Référence à la librairie
'Microsoft Visual Basic For Applications Extensibility 5.3.


Set ObjModuleStandard = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
Set ObjModuleDeClasse = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_ClassModule)
Set ObjUserForm = ThisWorkbook.VBProject.VBComponents.Add(Vbext_ct_MSForm)


End Sub


Pour ta question 'quoiqu'il crée chaque fois un nouvel userform' si tu regardes le fichier USF_ListBox_A_La_Volee.zip que j'ai mis en lien, tu verras que le UserForm est bien auto-détruit à chaque usage....

Pour le reste, j'ai besoin de plus d'information.

Bonne Journée
[ol]@+Thierry[/ol]

EDITION !!!

Pour les bouquins, je recommande toujours ceux de John Walkenbach traitant du VBA.

Message édité par: _Thierry, à: 22/11/2005 08:33
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…