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

VBA Discussion :

Création dynamique d'une ListView en VBA


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut Création dynamique d'une ListView en VBA
    Bonjour,

    Je développe une application basée sur Excel dans laquelle il est nécessaire de sélectionner les mêmes données dans divers dialogues (UserForm).
    Pour uniformiser la présentation et le mode d'emploi, et bien sûr éviter la duplication de code, je veux encapsuler dans un module de classe la création et la gestion de l'objet listant les données.

    J'ai déjà fait cela plusieurs fois avec succès avec des objets MSForm, en utilisant la commande (exemple avec un label) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaUserForm.Controls.Add("Forms.Label.1", "MonLabel", True)
    Mais cette fois, je voudrais instancier un ListView, qui ne fait pas partie des "ProgID" attendu par la commande Add.
    Y a-t-il un ProgID non documenté pour les ListView ?
    Y a-t-il une autre méthode pour créer dynamiquement un objet ?

    Malgré des recherches sur le Web, y compris sur ce site, je n'ai pas trouvé de solution.

    Quelqu'un a-t-il une solution ?

    Merci d'avance

  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
    Il ne s'agit pas là d'un contrôle natif de VBA/Excel
    Une solution existe. Elle est quelque peu bancale et nécessite la création d'un module de classe pour gérer les évènements d'une listview.
    Je te la déconseille (pour plusieurs raisons) , mais si tu y tiens -->> lis ceci --->>
    https://stackoverflow.com/questions/...l-in-excel-vba

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut
    Bonjour unparia,

    Un grand merci pour cette réponse si rapide.
    Je n'ai pas encore essayé mais ça semble bien répondre à mon besoin, et ressemble fort à ce que je faisais déjà avec les contrôles natifs.

    Sans vouloir abuser de ton temps et avant de mettre cette discussion à résolue, pourquoi qualifies-tu cette solution de bancale et me la déconseilles-tu ?

  4. #4
    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
    pourquoi qualifies-tu cette solution de bancale et me la déconseilles-tu ?
    parce que Listview n'est pas un composant natif de VBA/Excel. Il est inclus dans la librairie COMCTL (où il n'est d'ailleurs pas le seul composant géré; d'autres s'y trouvent également).
    Cette librairie est constamment source de problèmes divers et variés lorsqu'utilisée depuis VBA. Notamment du fait de versions différentes de Windows (32 bits - 64 bits).
    Je te signale par ailleurs que cette librairie est protégée par des droits et qu'il te serait interdit de distribuer avec ton application l'un des composants qu'elle contient.
    Que t'apporterait d'ailleurs de vraiment utile une listview par rapport à une listbox VBA ***** et que tu ne saurais faire avec une listbox ?

    ***** je te signale que même une listbox native de VBA n'a rien à voir avec une listbox de VB5/6

    Je n'ai rien d'autre à ajouter. A toi de voir ...

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut Merci
    C'est bien noté, y compris l'aspect commercial, que j'ignorais.
    Merci encore,

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

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