Bonjour,
Pour une application sous VBA-Excel, je me suis defini un type de variable personnel similaire a la structure en C :
Pour s'en servir, ca se complique... J'aimerais faire une fonction qui va lire dans la page active les valeurs correspondantes. Le plus naturel me parait etre :Code:Type TCaracDesign CDo As Long k As Long Sm2 As Long S As Long Wto As Long ZFW As Long ClMax As Long ClMin As Long End Type
Le probleme est qu'a l'appel de la fonction, j'ai une erreur de compilation lors de l'affectation de Caracteristics a getCaracDesignIndirect que je livre dans son integralite :Code:Function getCaracDesignIndirect() As TCaracDesign 'Sheet MAV Performances is active 'Gets the caracteristics of cadet's design Dim CaracDesign As TCaracDesign MsgBox ("Entree de getCaracDesignIndirect") CaracDesign.CDo = Cells(24, 1) CaracDesign.k = Cells(24, 2) CaracDesign.Sm2 = Cells(24, 5) CaracDesign.Wto = Cells(24, 11) CaracDesign.ZFW = Cells(24, 14) CaracDesign.ClMax = Cells(29, 13) CaracDesign.ClMin = Cells(31, 13) CaracDesign.S = Cells(25, 5) getCaracDesignIndirect = Caracteristics MsgBox ("Sortie de getCaracDesignIndirect") End Function
Le tout se passe dans un module "normal"... je ne vois pas ce que peut etre un public object modules. J'ai essaye de mettre du Public devant Type et / ou devant Function sans succes.Envoyé par Excel
Pour contourner le probleme parce que je prefere un code pas tres propre plutot qu'elegant dans une semaine (ce serait trop tard...), j'ai tente
Dans, ce cas c'est encore mieux, la valeurs des parametres est correctement lue (MsgBox avec appel a ActiveSheet.Cells...) mais une fois qu'elle est affectee a la variable getCaracDesignDirect.CDo, le contenu de la variable est 0...Code:Function getCaracDesignDirect() As TCaracDesign 'MAV Performances is active 'Gets the caracteristics of cadet's design MsgBox ("Entre dans getCaracDesignDirect") getCaracDesignDirect.CDo = ActiveSheet.Cells(24, 1).Value getCaracDesignDirect.k = ActiveSheet.Cells(24, 2).Value MsgBox ("Dans getCaracDesignDirect - ActiveSheet : " & ActiveSheet.Name) MsgBox ("Dans getCaracDesignDirect/lecture directe - CD0 : " & ActiveSheet.Cells(24, 1).Value & " k = " & ActiveSheet.Cells(24, 2).Value) MsgBox ("Dans getCaracDesignDirect - CD0 : " & getCaracDesignDirect.CDo & " k = " & getCaracDesignDirect.k) getCaracDesignDirect.Sm2 = Cells(24, 5) getCaracDesignDirect.Wto = Cells(24, 11) getCaracDesignDirect.ZFW = Cells(24, 14) getCaracDesignDirect.ClMax = Cells(29, 13) getCaracDesignDirect.ClMin = Cells(31, 13) getCaracDesignDirect.S = Cells(25, 5) MsgBox ("Sortie de getCaracDesignDirect") End Function
Quelqu'un a-t-il un debut d'explication, voire de solution ?
Merci d'avance
Patrick
-----