[VBA] lister toutes les propri=c3=a9t=c3=a9s

4 réponses
Avatar
JièL
Salutatousses,

y'a t'il un moyen de lister toutes les propriétés d'un objet ?

ça pourrait ressemble à ça
For i = 1 to In objet.propriétés.count
debug.print propriétés(i).name
Next


En fait, je voudrais comparer "toutes" les propriétés d'un objet avec un
autre sans me les faire manuellement une par une, du genre

ou encore
For i = 1 to In objet.propriétés.count
debug.print Objet1.propriétés(i)
debug.print Objet2.propriétés(i)
Next

Merci d'avance

--
JièL Pro Prix y été

4 réponses

Avatar
MichD
Bonjour,
A )
Pour l'exécution du code, cela requiert une bibliothèque que Windows 10 ne
possède pas. Tu peux télécharger le fichier zippé à cette adresse :
http://www.cjoint.com/c/GJflX5RvxTw . Tu dois le dézipper et placer le
fichier tlbinf32.dll dans le répertoire C:WindowsSystem32
B ) tu dois maintenant l'enregistrer dans la base de registre de Windows
- ouvrir Windows PowerShell as Admin.
- passer la commande suivante :
Regsvr32.exe c:WindowsSystem32tlbinf32.dll
- Tu obtiens un message à l'effet que l'opération a réussi.
C ) Maintenant il faut ajouter cette bibliothèque au projetVBA en cours
Barre des menus / outils / référence / et à l'aide du bouton
"Parcourir", tu remontes dans l'arborescence de l'explorateur Windows
jusqu'au fichier tlbinf32.dll . Tu t'assures que la case est bien cochée
avant de fermer la fenêtre.
D ) Dans un module standard, copie ce code... ce n'est qu'un exemple :
'--------------------------------------------------------
Sub test()
Dim Rg As Range
Set Rg = Range("A1")
Call ObjectProperties(Rg)
End Sub
'--------------------------------------------------------
Sub ObjectProperties(ByVal o As Object)
'Requiert la bibliothèque suivante assumée
'par le fichier tLbinf32.dll
Dim T As TLI.TLIApplication
Dim Ti As TLI.TypeInfo
Dim Mi As TLI.MemberInfo, i As Long
Set T = New TLI.TLIApplication
Set Ti = T.InterfaceInfoFromObject(o)
For Each Mi In Ti.Members
i = i + 1
ActiveSheet.Cells(i, 1).Value = Mi.Name
Next
End Sub
'--------------------------------------------------------
MichD
"JièL" a écrit dans le message de groupe de discussion :
59d60d22$0$31611$
Salutatousses,
y'a t'il un moyen de lister toutes les propriétés d'un objet ?
ça pourrait ressemble à ça
For i = 1 to In objet.propriétés.count
debug.print propriétés(i).name
Next
En fait, je voudrais comparer "toutes" les propriétés d'un objet avec un
autre sans me les faire manuellement une par une, du genre
ou encore
For i = 1 to In objet.propriétés.count
debug.print Objet1.propriétés(i)
debug.print Objet2.propriétés(i)
Next
Merci d'avance
--
JièL Pro Prix y été
Avatar
JièL
Merci Beaucoup MichD
cependant j'ai 2 soucis avec ce code
1 - Il me liste aussi les méthodes et, tel quel, je ne vois pas comment
les éviter
2 - je n'arrive pas à avoir les valeurs des propriétés (je m'étais
planté dans mon 2ème pseudo code, je voudrais vérifier que les valeurs
des propriétés)
J'ai tenté d'ajouter
ActiveSheet.Cells(i, 2).Value = Mi.Value
mais outre le fait que ça ne peut pas fonctionner avec les méthodes, ça
ne fonctionne pas non plus avec les propriétés.
Je n'ai rien trouvé de probant en recherchant sur "tlbinf32" ou
"TLIApplication", tu pourrais m'en dire plus s'il te plait ?
Merci
--
JièL sous si
Le 05/10/2017 à 14:07, MichD a écrit :
Bonjour,
A )
Pour l'exécution du code, cela requiert une bibliothèque que Windows 10
ne possède pas. Tu peux télécharger le fichier zippé à cette adresse :
http://www.cjoint.com/c/GJflX5RvxTw . Tu dois le dézipper et placer le
fichier tlbinf32.dll dans le répertoire C:WindowsSystem32
B ) tu dois maintenant l'enregistrer dans la base de registre de Windows
- ouvrir Windows PowerShell as Admin.
- passer la commande suivante :
   Regsvr32.exe c:WindowsSystem32tlbinf32.dll
- Tu obtiens un message à l'effet que l'opération a réussi.
C ) Maintenant il faut ajouter cette bibliothèque au projetVBA en cours
    Barre des menus / outils / référence / et à l'aide du bouton
"Parcourir", tu remontes dans l'arborescence de l'explorateur Windows
jusqu'au fichier tlbinf32.dll . Tu t'assures que la case est bien cochée
avant de fermer la fenêtre.
D ) Dans un module standard, copie ce code... ce n'est qu'un exemple :
'--------------------------------------------------------
Sub test()
Dim Rg As Range
Set Rg = Range("A1")
Call ObjectProperties(Rg)
End Sub
'--------------------------------------------------------
Sub ObjectProperties(ByVal o As Object)
'Requiert la bibliothèque suivante assumée
'par le fichier tLbinf32.dll
Dim T As TLI.TLIApplication
Dim Ti As TLI.TypeInfo
Dim Mi As TLI.MemberInfo, i As Long
Set T = New TLI.TLIApplication
Set Ti = T.InterfaceInfoFromObject(o)
For Each Mi In Ti.Members
   i = i + 1
   ActiveSheet.Cells(i, 1).Value = Mi.Name
Next
End Sub
'--------------------------------------------------------
MichD
"JièL"  a écrit dans le message de groupe de discussion :
59d60d22$0$31611$
Salutatousses,
y'a t'il un moyen de lister toutes les propriétés d'un objet ?
ça pourrait ressemble à ça
For i = 1 to In objet.propriétés.count
    debug.print propriétés(i).name
Next
En fait, je voudrais comparer "toutes" les propriétés d'un objet avec un
autre sans me les faire manuellement une par une, du genre
ou encore
For i = 1 to In objet.propriétés.count
    debug.print Objet1.propriétés(i)
    debug.print Objet2.propriétés(i)
Next
Merci d'avance
Avatar
MichD
Je joins un fichier qui a été développé par l'excellent MVP Jan Karel
Pieterse.
http://www.cjoint.com/c/GJfw1iqnANK
Le site d'où provient ce fichier :
http://dailydoseofexcel.com/archives/2007/05/14/listing-an-objects-properties-and-methods/
ça prend plus qu'une petite boucle en VBA pour obtenir le résultat que tu
recherches.
Je te laisse le soin d'adapter cet exemple à ton besoin! ;-)
MichD
Avatar
JièL
FA-BU-LEUX !!!
Super code, propre, lisible et (relativement) commenté
Sacré boulot.
Merci.
Pour adapter ça va pas être très simple, mais c'est un super truc.
--
JièL
Le 06/10/2017 à 01:04, MichD a écrit :
Je joins un fichier qui a été développé par l'excellent MVP Jan Karel
Pieterse.
http://www.cjoint.com/c/GJfw1iqnANK
Le site d'où provient ce fichier :
http://dailydoseofexcel.com/archives/2007/05/14/listing-an-objects-properties-and-methods/
ça prend plus qu'une petite boucle en VBA pour obtenir le résultat que
tu recherches.
Je te laisse le soin d'adapter cet exemple à ton besoin!  ;-)
MichD