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

Macros et VBA Excel Discussion :

Controles vba Supplementaires [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut Controles vba Supplementaires
    Bonjour,

    J'ai créé une UserForm en insérant un contrôle supplémentaire : "Microsoft TreeView Controle, version 5.0 (Sp2)"

    Ce contrôle fonctionne parfaitement, il me permet de créer une arborescence avec mes données.

    Le problème se pose quand je transmet le fichier excel à d'autres utilisateurs. La UserForm n'a plus l'objet Treeview créé.

    Il ne s'agit pas d'un problème de fichier comctl32L.ocx, car tous les utilisateurs ont ce fichier. Je peux d'ailleurs pour paliers au problème leur crééer l'objet treeview.

    J'ai même essayé cette commande dans le Workbook_open()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Ajouter la référence au projet
    FichierCible = "C:\Windows\System32\comctl32.ocx"
    Application.VBE.ActiveVBProject.References.AddFromFile FichierCible
    Mais il m'indique "Nom de module, de projet ou de bibliothèque déjà présent."

    Ce qui parait logique vu que sur ces postes j'ai comctl32.ocx et je peut créer l'objet treeview dans la userform.

    Quelqu'un sait-il la méthode pour que l’intégration de l'objet treeview soit conservé lors de l'utilisation du fichier excel par d'autres personnes.

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    L'ActiveX comctl32.ocx n'est peut être pas enregistré dans la base de registre.
    Essayez de le faire avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Registre_comctl32()
    Shell "Regsvr32 comctl32.ocx"
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Idem pour l'inscription dans la base de registre. Il m'indique que comctl32.ocx est déjà chargé.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Peut être en visitant ce lien
    http://answers.microsoft.com/fr-fr/o...4-6a45c9817dbb

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Bonsoir,

    Le liens que tu donnes est super intéressant. J'ai fait quelques tests, mais mon problème est après la déclaration de la référence.

    Mon Userform contient un objet Treeview que j'ai ajouté en tant qu'objet supplémentaire :



    je peux choisir la version 6.0 (SP6) ou 5.0 (SP2)

    La référence concernée est bien sélectionnée :



    Mais quand j'ouvre le fichier excel, j'ai :



    Si je vais sur la Userform, le Treeview à disparu :



    Si je le remets manuellement ça fonctionne, mais dès qu'un nouvel utilisateur lance le fichier le problème se pose, je suis obligé de reinserrer le Treeview sur la userform moi-même. (Pour info, sur le poste du nouvel utilisateur les références sont bien sélectionnées)

    Aucun ténor du Vba excel n'a de solution à mon problème ?
    Images attachées Images attachées     

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Tentez l'expérience suivante

    Arès avoir retiré le TreeView de la boîte à outils "Contrôles supplémentaires" et enlevé toutes les références "Microsoft Windows Common Controls"
    1) créez un UserForm et laissez le vide de tout contrôle
    2) dans sa fenêtre de code, copiez le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    Me.Controls.Add ("COMCTL.TreeCtrl.1")
    End Sub
    3) lancez le UserForm
    ******
    J'obtiens chez moi le UserForm avec un TreeVew vide.
    Si vous obtenez le même résultat sur une machine qui ne pose pas problème, faites le test sur une machine d'un utilisateur où un dysfonctionnement est constaté.
    J'aimerais connaître le résultat.
    S'il s'avère, il y aura peut être une solution envisageable.

    A plus.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Bonsoir,

    Merci pour ce retour.

    J'ai effectué le test :

    Sur mon poste. Je vois bien le Userform avec l'objet Treeview vide.

    Sur l'un des postes qui pose problème, j'obtiens le message suivant :



    Je vais essayer sur d'autres postes pour m'assurer que le message est toujours le même.

    Cdlt
    Images attachées Images attachées  

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Bonjour,

    J'ai essayé sur plusieurs postes la méthode de création du Treeview à l'ouverture du Userform, avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls.Add ("COMCTL.TreeCtrl.1")
    et ça a résolu mon problème.

    Je pense que le problème de licence est propre à ce poste.

    Encore Merci PMO2017

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Tant mieux.
    Il n'y a plus qu'à programmer le TreeView et son contenu à l'exécution.

    Lors de la programmation, montez la référence "Microsoft Window Common Controls" pour pouvoir bénéficier de l'Intellisense et de la vision des méthodes et propriétés dans l'Explorateur d'Objets, déclarez vos variables objet avec le type adéquat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim nodX As Node
    Set nodX = TreeView1.Nodes.Add(, , "R", "Racine")
    ******
    Par la suite, il faut mettre le code en liaison tardive (late biding) plutôt qu'en liaison précoce (early binding). Transformez le type des déclarations d'object en type générique Object
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim nodX As Object   'Node
    Set nodX = TreeView1.Nodes.Add(, , "R", "Racine")
    Si vous avez utilisé des constantes intrinsèques à la librairie MSComctlLib, remplacez les constantes par leur valeur numérique.
    Retirez la référence "Microsoft Window Common Controls".

    J'espère ne rien avoir oublié.

    Bon courage et à plus.

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

Discussions similaires

  1. Nouvelle version de controle VBA
    Par jackborogar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/06/2012, 16h23
  2. Pb pour verouillé les controles d'un formulaire (VBA)
    Par Celia1303 dans le forum Access
    Réponses: 12
    Dernier message: 24/10/2005, 12h19
  3. [VBA Excel] Fiabilité des controles Actives X
    Par Farbin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/08/2005, 13h28
  4. [VBA-E] Controle Webbrowser
    Par Mystify dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/10/2004, 22h30
  5. [VBA-E] Est il possible de creer dynamiquement des controles en VBA
    Par bbkenny dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 13/08/2004, 21h04

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