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 :

Références objets VBA pas disponibles par défaut


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Electro02
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Avril 2018
    Messages : 36
    Par défaut Références objets VBA pas disponibles par défaut
    Bonjour à tous,

    J'ai besoin de l'aide d'experts !

    Nous avons, dans l'entreprise où je travaille, récemment installé Office 2016, "en dur".
    Oui nous sommes très en retard, mais je ne suis absolument pas responsable de ce métro, qui dis-je, de cet Eurostar de retard !
    C'est un marché national, avec la distribution d'un pack d'installation unique pour tous les sites de travail, après des mois de tests côté sécurité et compatibilité avec tous nos différents outils, très nombreux...
    Donc en gros, on est toujours en retard et en local on ne peut presque rien personnaliser. A ce pack s'ajoutent des diffusions de KB successifs pour corriger des bogues.

    La situation qu'est la mienne étant posée :
    Pour faire fonctionner un outil local Excel gavé de macros VBA, il est indispensable pour moi de pouvoir activer une liste précise de "références".
    Elles sont activées par macros, mais elle doivent être disponibles et donc activables au démarrage d'Excel.


    Mon souci : Il me manque deux références dans ma liste "par défaut" de références activables.
    - Microsoft Forms 2.0 Object Library
    - Microsoft Windows Common Controls 6.0 (SP6)

    Je suis donc allé chercher ce qu'il faut pour les ajouter à ma liste de références : FM20.DLL dans Windows\System32 pour ma première référence manquante, et MSCOMCTL.OCX dans Windows\SysWOW64 pour la seconde.

    Je peux alors les activer et les utiliser et tout va bien dans le meilleur des mondes...
    SAUF QUE si je ferme Excel, que j'enregistre ou pas le classeur où je suis aller rechercher mes références, et que je l'ouvre à nouveau, je n'ai plus mes deux références manquantes ! Donc ça ne va pas pour mon outil qui doit pouvoir les activer automatiquement (par macros)...

    J'ai essayé plusieurs solutions trouvées sur le Net :
    - Créer un modèle Classeur.xltx mis dans C:\Users\MONUSIERID\AppData\Roaming\Microsoft\Excel\XLSTART (j'ai même essayé au cas où avec un Classeur.xltm). Mon Excel s'ouvre bien depuis mon .xltx par défaut mais dans mes références. Et cela ne fonctionne pas du tout avec un .xltm
    - utiliser regsrv32 en ligne de commande shell pour enregistrer ma DLL et mon OCX
    - utiliser regsvr32 pour faire du "/u" et du "unregister" puis du "/register"
    - Mettre au moins mon FM20.DLL dans les Add-In (ne fonctionne pas du tout et de toute façon je pourrai pas tenter l'ocx)

    J'ai bien pensé à la base de Registre mais je n'y connais pas grand chose dans ce domaine là, et j'ai peur de faire planter mon ordi de travail si je ne suis pas sûr de ce que je fais...
    Mais j'ai tout de même voulu récupérer les GUID de mes deux références, au cas où, mais là encore j'ai un souci : j'ai testé plusieurs codes VBA qui ne permettent de lister des références activées et récupérer leur GUID, mais aucune de fonctionne sur mon poste ! J'ai les titres et la macro tourne, mais aucun listage de quoi que ce soit à part les titres de colonnes ! Un lien à mon souci ?

    Je connais bien ce super forum que je consulte régulièrement depuis plusieurs années pour m'aider dans mes propres développements de macros VBA.
    J'ai donc appliqué deux critères essentiels à vos yeux : bien dire et bien expliqué le souci, avec précision et un maximum d'éléments... et avant toute demande d'aide : chercher par soi-même !

    Mais là, je sèche vraiment, j'ai fait mon possible (ne suis pas informaticien) et j'ai besoin de vous !

    Comment faire en sorte que mon Excel 2016, peu importe avec quel classeur, affiche Microsoft Forms 2.0 Object Library et Microsoft Windows Common Controls 6.0 (SP6), par défaut, dans la liste des références objets disponibles dans les projets VBA ?

    Merci par avance !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Je voit 2 cas d'utilisation à différencier:
    1) Cas d'un classeur existant:
    Les références sont-elles cochées dans la liste des références ?

    2) Cas d'un nouveau classeur:
    Les références que tu cites ne font pas partie de celles activées par défaut, à ma connaissance, on ne peut rien y changer.
    Une première solution peut être de créer les nouveaux classeurs à partir d'un template (.xltm) qui incluera les références (ajoute un formulaire contenant un contrôle issu de mscomctl pour être sur de que les références ne "sautent" pas).
    Une seconde solution peut être d'ajouter les références manquantes dynamiquement à l'ouverture du classeur. *WARNING* C'est extrêmement casse-gueule, à tes risques et périls (recherche sur google).

    Update:
    Il y a possibilité de créer un template par défaut.
    Plus d'infos ici: https://support.microsoft.com/en-us/...0is%20selected.

  3. #3
    Membre averti Avatar de Electro02
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Avril 2018
    Messages : 36
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Salut,

    Je voit 2 cas d'utilisation à différencier:
    1) Cas d'un classeur existant:
    Les références sont-elles cochées dans la liste des références ?

    2) Cas d'un nouveau classeur:
    Les références que tu cites ne font pas partie de celles activées par défaut, à ma connaissance, on ne peut rien y changer.
    Une première solution peut être de créer les nouveaux classeurs à partir d'un template (.xltm) qui incluera les références (ajoute un formulaire contenant un contrôle issu de mscomctl pour être sur de que les références ne "sautent" pas).
    Une seconde solution peut être d'ajouter les références manquantes dynamiquement à l'ouverture du classeur. *WARNING* C'est extrêmement casse-gueule, à tes risques et périls (recherche sur google).

    Update:
    Il y a possibilité de créer un template par défaut.
    Plus d'infos ici: https://support.microsoft.com/en-us/...0is%20selected.
    Bonsoir deedolith et merci pour ton intervention rapide.

    Comme je l'ai exposé, nous sommes quasiment dans le cas numéro 2.
    Je souhaite que mes références manquantes soient listées pour TOUS les classeurs à ouvrir ou nouveaux, même si elle ne sont pas activées. Qu'elles soient au moins dans la liste des références disponibles avec toutes les autres.

    Le template ne m'aidera malheureusement pas (j'y avais pensé aussi ^^), tout comme le "modèle" par défaut en .xltx ou .xltm, comme indiqué également, car cela ne fonctionne pas. Mon Excel s'ouvre bien sur ce modèle, mais pas avec les références que j'ai dû ajouter "manuellement". Et puis de toute façon pas sûr que cela m'aiderait quand mon "outil" Excel dont il est question s'ouvrira et qu'à l'ouverture, par macros, il voudra activer automatiquement 7 références, je crois, dont les 2 qui me manquent. Je ne pars donc pas d'un classeur vierge, qu'il soit issu d'un template ou d'un modèle, mais bien d'un classeur existant...

    Le choix serait donc le "casse-gueule", mais j'imagine que cela veut dire toucher au code VBA de mon fameux "outil" Excel... sauf qu'il vient de l'extérieur et que je n'ai pas la main sur le projet VBA :-(
    De plus, comme toutes les références requises ne sont pas activables, toutes les macros de démarrage se mettent en erreur (et je n'ai pas accès au débogage) et le classeur se ferme...

    Je pencherai donc peut-être sur une modification de la base de registre, non ?
    Car après tout, quand on installe le pack Office, je pense que toutes les références disponibles sont déclarées dedans...

    Mais je reste preneur de toute piste ;-)

    En voilà, un challenge ^^

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    As-tu inséré un formulaire issue avec un contrôle issue de mscomctl.ocx dans ton template ?
    L'insertion de ces 2 éléments ajoute automatiquement les références dans le classeur.

  5. #5
    Membre averti Avatar de Electro02
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2018
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Avril 2018
    Messages : 36
    Par défaut
    Citation Envoyé par deedolith Voir le message
    As-tu inséré un formulaire issue avec un contrôle issue de mscomctl.ocx dans ton template ?
    L'insertion de ces 2 éléments ajoute automatiquement les références dans le classeur.
    Bonjour à toi et merci pour cette nouvelle intervention.

    J'ai fait un essai côté formulaire par deux possibilités :
    - par la très limitée fonction "formulaire" directement depuis le bandeau d'accès rapide : cela fonctionne
    - par l'insertion d'un UserForm dans un projet VBA d'un classeur Excel existant : cela fonctionne aussi !

    Dans le second cas, je peux créer et gérer mon UserForm sans souci et... magie... ma référence "Microsoft Forms 2.0" est bien là, en haut de liste, et bien activée !

    J'enregistre et je ferme.
    Je rouvre le fichier, j'ai toujours ma référence présente et même activée (cochée).
    Si j'ouvre une nouvelle session Excel avec un classeur vide, je n'ai de nouveau plus cette référence dans ma liste, même décochée.

    Donc j'imagine qu'il y a juste un souci côté base de registre, pour l'affichage et l'activation sans devoir au préalable créer un UserForm.
    La référence est bien présente et activable, mais juste invisible sans UserForm, en gros...
    Il est donc possible que la référence se déclenche à l'ouverture et à l'exécution des macros de mon fameux outil qui en a absolument besoin.
    A tester plus tard.

    Mais pour l'autre référence, "Microsoft Windows Common Controls 6.0 (SP6)", y a t-il moyen d'utiliser un méthode dans ce genre pour voir si cela s'affiche et s'active tout seul aussi, comme avec la création d'un UserForm avec l'autre référence ?
    J'avoue ne pas être assez au top pour savoir à quoi peut bien servir la référence "Microsoft Windows Common Controls 6.0 (SP6)"...

    Ce que tu appelles un "contrôle issu de mscomctl.ocx", ce sont les boutons de coche et autres contrôles disponibles dans la petite "boîte à outils" qui s'affiche à côté de mon UserForm en mode "View" ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Citation Envoyé par Electro02 Voir le message
    Ce que tu appelles un "contrôle issu de mscomctl.ocx", ce sont les boutons de coche et autres contrôles disponibles dans la petite "boîte à outils" qui s'affiche à côté de mon UserForm en mode "View" ?
    Non, cet ocx est la référence "Microsoft Windows Common Controls 6.0 (SP6)", qui donne accès aux contrôles avancés tels que ListView, TreeView, DateTime picker, ImageList ect ...)

    Pour tes autres interrogations, je n'ai pas plus de réponse à apporter.

Discussions similaires

  1. Rendre un obstacle n'est pas traversé par un objet en ActionScript3! comment faire???
    Par Jony Bernard dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 16/09/2016, 03h07
  2. Réponses: 1
    Dernier message: 11/05/2016, 16h25
  3. [PPT-2007] Utiliser du code VBA sur plusieurs objets et pas qu'un seul
    Par beegees dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 25/03/2010, 09h55
  4. Réponses: 2
    Dernier message: 08/02/2007, 10h20
  5. Réponses: 1
    Dernier message: 25/10/2006, 11h13

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