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

proprietes et contenu des éléments VB en macro

A

anival

Guest
Bonjour à tous,

Je fait face à un problème pour le développement d'"explorateur" de projet.

En fait je balai les composant de mon classeur et dans la cas d'un formulaire, je scrupte les propriétés, et je souhaite avoir aussi la liste des controls (type + nom) mais je n'arrive pas à lire la collection Controls


voici le source


Public Sub Prc_Propriete()
Dim Z_Composant
Dim Z_Properties
Dim Z_Form
Dim Z_Ctl As Control
Dim Z_Ctls As Controls
Dim Z_NbCtl
'On Error Resume Next
For Z_Composant = 1 To ThisWorkbook.VBProject.VBComponents.Count
With ThisWorkbook.VBProject.VBComponents.Item(Z_Composant)
Select Case .Type
Case 1 '"vbext_ct_StdModule"
Debug.Print .Name
Case 2 '"vbext_ct_ClassModule"
Debug.Print .Name
Case 3 '"vbext_ct_MSForm"
Debug.Print .Name
.Activate
For Z_Properties = 0 To .Properties.Count
'Debug.Print " " & .Properties(Z_Properties).Name & " " & .Properties(Z_Properties).Value
Next
Set Z_Form = ThisWorkbook.VBProject.VBComponents.Item(Z_Composant)
Set Z_Ctls = Z_Form.Controls
For Z_NbCtl = 1 To Z_Ctls.Count
Debug.Print Z_Ctls.Item(Z_NbCtl).Name
Next
Case 11 '"vbext_ct_ActiveXDesigner"

Case 100 '"vbext_ct_Document"
Debug.Print .Name
End Select
Debug.Print " "
End With
Next Z_Composant
End Sub


Merci d'avance
 
Z

Zon

Guest
Salut,

Pour connaitre les caractéristiques de controle il faut passer par Designer. pour le type de controle je ne vois pas d'autre solution que de passer par une fonction personnalisée.

Set Z_Form = ThisWorkbook.VBProject.VBComponents.Item(Z_Composant).designer
Set Z_Ctls = Z_Form.Controls
For Z_NbCtl = 0 To Z_Ctls.Count-1 'la collection est en base 0
Debug.Print Z_Ctls.Item(Z_NbCtl).Name
Debug.Print typectrl(Z_Ctls(Z_NbCtl))
Next
'etc
end sub

function TypeCtrl&(Ctrl as control)
if typeof ctrl is msforms.checkbox then typectrl=1
if typeof ctrl is msforms.commandbutton then typectrl=2
'à compléter
end function

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