bonjour.

j'écris des petites fonctions en C++ que je wrappe dans des DLLs pour les utiliser avec excel.

avec des variables C++ (int, double, long, ...) et Excel (Double, Integer, .. ) [avec des 'chiffres', quoi!], je code sans problème.

en revanche, je ne parviens pas à utiliser une String de VBA vers C++ , je choisis de la passer ByVal.

le livre de steve dalton donne la réponse à ma question, mais je ne sais pas quoi faire avec les explications du bonhomme !

Quand elle est passée BYVal vers C++, la String de VBA arrive comme une BSTR ... vous pouvez déclarer votre argument comme un char* , ce qui a pour effet de caster le pointeur directement vers l'espace-mémoire alloué à la BSTR
un petit code d'illustration, en-dessous. si quelqu'un a la gentillesse de corriger. je ne sais que faire des BSTR ? char* ? reférencement et dé-férencement ??


code C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
double __stdcall maFonction(BSTR couleur)
{
	double resultat;
	if ('rouge' == couleur)
		resultat = 3.7999;
	else
		resultat = 5.455;
	return resultat;
}
Appel de fonction en VBA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Declare Function maFonction Lib "C:\ .... majoliefonction.dll" _
(ByVal couleur As String) As Double
merci de votre aide.
édouard