IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Utilisation de MSForm en VB6


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    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.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    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)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    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

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    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)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    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

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    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)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    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!

+ 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