1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 622
    Points : 1 182
    Points
    1 182

    Par défaut Utilisation de MSForm en VB6

    Bonjour,

    Je souhaite protéger une classe en créant une dll.
    Pas de souci pour la démarche sous VB6.
    Cependant, ma classe "implémente" une autre classe : MsForms.
    Comment y faire référence?

    L'exemple tout bête est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public WithEvents Liste As MsForms.ListBox
     
    Private Sub Liste_Click()
        If Liste.ListIndex > -1 Then
            MsgBox Liste.List(Liste.ListIndex)
        End If
    End Sub
    A la compilation de la dll (sous VB6 au moment ou je clic sur Make Project1.dll), le message d'erreur me donne ceci :
    Compile Error:
    User-defined type not defined
    et me surligne : WithEvents Liste As MsForms.ListBox
    Je suppose qu'il faut donc que je lui dise de faire la liaison avec la bibliothèque MsForms, mais comment???

    EDIT : J'arrive finalement à compiler ma dll en ajoutant, sous VB6, la référence à MsForms 2.0.
    mais bon, l'événement, sous VBA Excel, ne se déclenche pas...
    pas de message d'erreur, mon UserForm s'affiche bien, mais l'événement ne se déclenche pas...
    Le code d'appel, dans mon UserForm est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Cl As New Project1.Class1
    Set Cl.Liste = ListBox1
    Cordialement,
    Franck P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    2 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 2 556
    Points : 4 445
    Points
    4 445

    Par défaut

    Bonjour Franck
    Si j'ai bien compris, cette erreur se produit sous VB6 (lors de la compilation d'un usercontrol).
    C'est normal --->> une listbox VB6 n'est pas un contrôle MsForms.ListBox, mais un contrôle Listbox
    Attention, par ailleurs (un contrôle listbox VB6 est TRES différent d'un contrôle Listbox VBA. Ce sont deux activex complètement distincts et la différence est fondamentale).

    VB6 ne sait pas gérer une listbox VBA et VBA ne sait pas gérer une listbox VB6.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro). Ne m'en proposez donc pas.

  3. #3
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 144
    Points : 24 645
    Points
    24 645
    Billets dans le blog
    4

    Par défaut

    Salut

    Citation Envoyé par unparia Voir le message
    [...]VB6 ne sait pas gérer une listbox VBA et VBA ne sait pas gérer une listbox VB6.
    Ne peut-on pas référencer la librairie idoine pour que VB6 puisse utiliser le msforms.listbox?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    N'oubliez pas de VOTER (en bas à droite d'un message)
    ---------------

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 622
    Points : 1 182
    Points
    1 182

    Par défaut

    Bonjour messieurs,

    Ma question a, semble t'il évoluée.
    Cf mon edit :
    J'arrive finalement à compiler ma dll en ajoutant, sous VB6, la référence à MsForms 2.0.
    mais bon, l'événement, sous VBA Excel, ne se déclenche pas...
    pas de message d'erreur, mon UserForm s'affiche bien, mais l'événement ne se déclenche pas...
    Le code d'appel, dans mon UserForm est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Cl As New Project1.Class1
    Set Cl.Liste = ListBox1
    Cordialement,
    Franck P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  5. #5
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 144
    Points : 24 645
    Points
    24 645
    Billets dans le blog
    4

    Par défaut

    Perso, je ne sais pas tester sur le poste sur lequel je travaille...

    Peut-être unparia a-t-il une idée...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    N'oubliez pas de VOTER (en bas à droite d'un message)
    ---------------

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 622
    Points : 1 182
    Points
    1 182

    Par défaut

    Messieurs,

    Veuillez excuser l'abr*** que je suis.
    Tout curieux de découvrir un nouvel espace de jeu, j'en ai oublié les rudiments de déclaration de variables...

    Le code d'appel ne doit pas être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Initialize()
    Dim Cl As New Project1.Class1
    Set Cl.Liste = Me.ListBox1
    End Sub
    Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Cl As New Project1.Class1
    Private Sub UserForm_Initialize()
    Set Cl.Liste = Me.ListBox1
    End Sub
    Les rudiments, le B-A-BA quoi....
    Désolé, sujet résolu.

    Pour info, cela fonctionne drôlement bien, et, pour toi Jacques, cela permet de complètement cacher un code de module de classe VBA et ainsi ne pas dévoiler certaines propriétés.....
    Amicalement,
    Franck
    Cordialement,
    Franck P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  7. #7
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 144
    Points : 24 645
    Points
    24 645
    Billets dans le blog
    4

    Par défaut

    Citation Envoyé par pijaku Voir le message
    [...]Tout curieux de découvrir un nouvel espace de jeu[...]
    CA donne envie, hein, de découvrir ce genre de trucs... Quand j'ai commencé à travailler avec VSTO, je me suis senti pousser des ailes...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    N'oubliez pas de VOTER (en bas à droite d'un message)
    ---------------

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 622
    Points : 1 182
    Points
    1 182

    Par défaut

    Citation Envoyé par Pierre Fauconnier Voir le message
    CA donne envie, hein, de découvrir ce genre de trucs...
    Tout à fait !
    On apprends tous les jours, c'est bien cela qui est fantastique!
    Cordialement,
    Franck P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2008, 11h29
  2. Utilisation de MMControl en VB6
    Par yvanovitch dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/06/2007, 13h24
  3. Utilisation DLL créée sous VB6
    Par Dertron dans le forum Access
    Réponses: 12
    Dernier message: 05/04/2006, 14h54
  4. utilisation des webservices en vb6
    Par Amri_Daly dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 09/01/2006, 10h50
  5. [VB6] Utiliser dll .Net dans VB6
    Par sokette dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 31/03/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo