Emploi de variable de type definie par l'utilisateur en VBA-Excel
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Emploi de variable de type definie par l'utilisateur en VBA-Excel



  1. #1
    pat7111

    Emploi de variable de type definie par l'utilisateur en VBA-Excel


    ------

    Bonjour,

    Pour une application sous VBA-Excel, je me suis defini un type de variable personnel similaire a la structure en C :

    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
    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:
    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 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 :
    Citation Envoyé par Excel
    Only user-defined types defined in public object modules can be coerced to or from a variant or passed to late-bound functions
    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.

    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

    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
    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...

    Quelqu'un a-t-il un debut d'explication, voire de solution ?

    Merci d'avance

    Patrick

    -----
    Plutôt appliquer son intelligence à des conneries que sa connerie à des choses intelligentes...

  2. #2
    pat7111

    Re : Emploi de variable de type definie par l'utilisateur en VBA-Excel

    Citation Envoyé par pat7111 Voir le message
    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...
    Apres une journee de perplexite, j'ai trouve une solution a cette deuxieme partie du probleme : le type long est destine a des entiers et les valeurs lues sont inferieures a 1. Avec single par exemple au lieu de long, ca marche.

    Si des barbus en VBA savent comment se servir correctement des variables definies par l'utilisateur, je reste preneur
    Plutôt appliquer son intelligence à des conneries que sa connerie à des choses intelligentes...

Discussions similaires

  1. Excel VBA textbox
    Par inviteead871d5 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 29/05/2008, 10h34
  2. Contrôles et VBA en Excel
    Par invite6de5f0ac dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 20/10/2006, 11h09
  3. L'utilisateur entre un réel dans une variable entière : que se passe-t-il ?
    Par invite234d9cdb dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 08/10/2006, 12h04
  4. Publipostage en vba de excel vers word
    Par invite588da7a7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 21/07/2004, 09h45
  5. Impression excel / vba
    Par invite83451e7e dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/03/2004, 09h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.