proprietes et contenu des éléments VB en macro

  • Initiateur de la discussion Initiateur de la discussion anival
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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+++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour