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

XL 2021 Excel/vba et vb.net: Propriété de type OBJECT "ingérable"

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 !

p'tit vieux

XLDnaute Occasionnel
Bonjour à tous
Je ne sais pas si parmi vous certains connaissent vb.net et COM avec VBA.
je suis en train de faire un portage de certaines parties d'un UDF VBA en vb.net.
Je suis débutant en .NET.
Mon problème est "simple" j'ai créé des classes en VB.Net et certaines propriétés doivent être des types Object. Pas le choix.
Devinez!!
Je bloque sur le fait que lorsque je veux passer une valeur à cette propriété de type Object je me fais "jeter".
pour exemple voici ce que j'ai fait:
<ComVisible(True)>
<ClassInterface(ClassInterfaceType.AutoDual)>
Public Property ValueMax As Object
Get
Return _ValueMax
End Get
Set
_ValueMax = Value
End Set
End Property
Quelqu'un peut il m'aider à résoudre ce souci?
Par avance merci à tous.
 
bonjour,
j'imagine que tu as créé une bibliothèque de classe ?
VB:
Classe Toto
private _ValueMax as Object
Public Property ValueMax As Object
    Get
        Return _ValueMax
    End Get
    Set(value As Object)
        _ValueMax = value
    End Set
End Property
end classe

ensuite soi tu registre ta librairie:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe

soit tu importe le manifeste dans excel :
Menu Outils → Références → Parcourir…
le fichier porte l'extension [tlb]
 
Dernière édition:
Bonjour Dysort.
Merci pour ta réponse
mais cela ne résout pas le problème qui est dans VBA lorsque je tente d'affecter une valeur :
set toto.ValueMax = 789 ' tout simplement ou aussi une chaine
je me fais jeter : "erreur de type"
A priori je crois que COM a du mal "à digérer" le type Object
 
tu as dit objet mais quel genre d'objets ?
peut être qu'il faut décliner t.ValueMax.value

si tu mets t dans l'espion ?

comment as tu intègres ta librairie dans les références excel ?

789 n'est pas un objet mais avant toute chose regarde si l'instance t existes
 
Dernière édition:
par le menu VBE Références: Maclasse.TLB
oui l'instance existe sinon comme le montre la capture je n'aurais pas cela
Quand tu ne sais pas c'est un cauchemard ... je te le dis 😭
 
retour à visualiser studio
Va dans fichier ajouter un nouveau projet de type console par exemple. et défini le comme projet de démarrage.

vas dans le propriété de ce nouveau projet et active la référence qui ce trouve dans la solution
dans sub main déclare un instances de ta librairie.

tan que tu n'arrives pas à l'utiliser dans Visual studio tu ne pourras pas l'utiliser dans excel
 
Dyso.,
J'ai réussi à faire cela en suivant tes indications:
Module Module1
Sub Main()
Dim TT As New AL7_FDXRPN.clsColumnInfo
TT.ValueMin = "10"
TT.ValueMax = "100"
End Sub
End Module

voici la fenetre Espion de VS
 
déjà on peut éliminer le coté VS.
ceci dit la propriété retourne en objet pas une variable classique!
VB:
Sub test()
    Dim t As New AL7_FDXDLL.clsColumnInfo
    t.ValueMin = 10 'la conversion en object est implicite coté vb.net
    Debug.Print CDbl(t.ValueMin)  ' ou CStr(t.ValueMin)
End Sub
 
Oui sinon j'aurais les mêmes problèmes avec les autres propriétés de la classe et ce n'est pas le cas.
Juste avec celles déclarées comme Object. D'aprés ce que j'ai pu lire (mais bon je suis novice) c'est fréquent avec les types Object et interfaces COM. Mais pas trouvé de solution qui fonctionne.
 


VB:
Imports System.Runtime.InteropServices

Public Class ClsColumnInfof

    Private _ValueMax As Object

    Public Property ValueMax As Object
        Get
            Return _ValueMax
        End Get
        Set(Value As Object)
            _ValueMax = Value
        End Set
    End Property

End Class

registrer la dll
Code:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "C:\Projets GuilLab\al7_fdxdll\AL7_FDXDLL\bin\x86\Debug\AL7_FDXDLL.dll"
dé registrer la dll
Code:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "C:\Projets GuilLab\al7_fdxdll\AL7_FDXDLL\bin\x86\Debug\AL7_FDXDLL.dll" /unregister

 
Dernière édition:
- 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

Discussions similaires

A
Réponses
17
Affichages
4 K
Abdenour
A
G
Réponses
0
Affichages
1 K
guiboubou233
G
C
Réponses
1
Affichages
4 K
Conrad13
C
T
Réponses
11
Affichages
8 K
T
Réponses
2
Affichages
1 K
B
Réponses
4
Affichages
1 K
B
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…