Argh!
Je vois pas du tout là... bon je sais que ça fait glandeur, mais voici ce que j'ai fait pas à pas, si tu vois une erreur ou unh oubli quelque part ça me débloquerait peut-être...
Côté Visual Studio .NET:
1. Création d'un projet de type librairie de classes
2. Contenu 2 classes:
-----------------------------------------------------------------------------------------------------
Class1.cs
-----------------------------------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
namespace MyLibrary
{
/// <summary>
/// Summary description for Class1.
/// </summary>
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(
true)]
public
class Class1:IClass1
{
[ComVisible(
true)]
public
int maSomme(
int a,
int b)
{
return a+b;}
}
}
-----------------------------------------------------------------------------------------------------
IClass1.cs
-----------------------------------------------------------------------------------------------------
using System;
namespace MyLibrary
{
/// <summary>
/// Summary description for IClass1.
/// </summary>
public
interface IClass1
{
int maSomme(
int a,
int b);
}
}
3. Compilation du projet avec "Register for COM interop"
true> génération de MyLibrary.pdb, MyLibrary.dll et MyLibrary.tlb
Côté VBA:
1. Référencement de MyLibrary.tlb par "Outils/Références/add..."
2. Le code VBA est le suivant:
---------------------------------------------------------------------------------------------
Module1
---------------------------------------------------------------------------------------------
Sub maSommeVBA()
Dim myClass1 As Object
Set myClass1 = CreateObject("MyLibrary.Class1")
a = Feuil1.Cells(1, 1)
b = Feuil1.Cells(1, 2)
Feuil1.Cells(1, 4) = myClass1.maSomme(a, b)
Set myClass1 = Nothing
End Sub
Erreur générée sur le CreateObject :
Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet
Voila tout ce que j'ai :(
Je suis vraiment désolé de balancer tout mon code comme ça pour que tu m'aides à trouver l'erreur, mais je te rassure, je ne joue pas aux cartes pendant ce temps :))
Merci beaucoup!
Romain