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 :

GUID - MSCOMCTL2 - Référence incorrecte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut GUID - MSCOMCTL2 - Référence incorrecte
    Bonnjour le Forum,

    Je suis en train de perdre mes cheveux à vue d'oeil.. J'ai un gros souci de chargement des bibliothèques d'Excel.
    Voilà mon souci: j'ai développé une application qui permet entre autre de saisir des données et de récupérer des stats.
    Mon souci est que je dois mettre cette aplication en réseau et suivant les PC utilisés, les versions d'Excel et les bibilothèques personnelles des utilisateurs il faut que je m'assure d'avoir tout ce qui est nécessaire au non fonctionnement de ma macro...
    J'ai donc récupéré les GUID des ressources qui sont sur mon PC et dont j'ai besoin, pour les Ajouter à chaque ouverture du fichier:
    Recherche:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each ref In ThisWorkbook.VBProject.References
    MsgBox ref.Name & Chr(10) & ref.fullpath & Chr(10) & ref.GUID
    Next ref
    Ajout de la ressource:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    'ajoute toutes les références nécessaires au bon fonctionnement du programme
    'x = "C:\Program Files\Common Files\Microsoft Shared\Web Components\11\OWC11.dll"
    'ThisWorkbook.VBProject.References.AddFromFile x  'ou addfromguid (plus fiable que le chemin)
    With ThisWorkbook.VBProject.References
    Set ref = .AddFromGuid("{000204EF-0000-0000-C000-000000000046}", 0, 0)  'VBA
    Set ref = .AddFromGuid("{00020813-0000-0000-C000-000000000046}", 0, 0)  'Excel
    Set ref = .AddFromGuid("{00020430-0000-0000-C000-000000000046}", 0, 0)  'stdole
    Set ref = .AddFromGuid("{0002E558-0000-0000-C000-000000000046}", 0, 0)  'OWC11
    Set ref = .AddFromGuid("{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}", 0, 0)  'Office
    Set ref = .AddFromGuid("{0D452EE1-E08F-101A-852E-02608C4D0BB4}", 0, 0)  'MSForms
    Set ref = .AddFromGuid("{00024517-0000-0000-C000-000000000046}", 0, 0)  'REF EDIT
    Set ref = .AddFromGuid("{8E27C92E-1264-101C-8A2F-040224009C02}", 0, 0)  'MSACAL CALENDRIER
    Set ref = .AddFromGuid("{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}", 0, 0)  'MSCOMCTL2
     
    End With
    Mon souci est sur la référence:
    Set ref = .AddFromGuid("{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}", 0, 0) 'MSCOMCTL2

    Sur mon ordinateur j'ai comme désignation Microsoft Windows Common Control-2 6.0 (SP3).

    sur un second PC j'ai après avoir effectué le chargement comme indiqué ci dessus en ouverture de la macro:
    Microsoft Windows Common Control-2 6.0 (SP6).

    Sur un troisième PC la référence se met comme manquante...

    Et dans ces deux cas la macro ne veux pas se lancer...."Bibliothèque d'objets incorrecte ou contenant des références à des définitions d'objects introuvables"


    Quelqu'un pourrait m'aider sur des pistes de recherche pour réussir à prévoir tout type de configuration et ainsi faire fonctionner mon application sur n'importe quel ordinateur....

    Merci beaucoup à tous pour vos petits neurones...

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    et au lieu de passer par les GUID, n'est-il pas possible de passer par les path des références à ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\windows\system32\MSCOMCT2.OCX
    pour ton exemple, avec seulement une gestion éventuelle de la version de windows installée et de l'emplacement des fichiers ocx sur la machine.

    Surtout qu'ici c'est un seul fichier qui pose problème.

    Une solution plus bourrine serait encore de copier en local le fichier à partir d'un emplacement réseau, mais c'est une solution de dernier recours.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut
    Bonjour jpcheck,

    J'ai essayé... j'ai même commencé par ça!!
    Sur chaque PC charger les bibliothèques qu'il me faut en parcourant le chemin que j'avais sur mon PC à Moi...

    Et ba le sésultat c'est que pour le chemin :
    C:\winnt|system32\mscomct2.ocx surmon PC j'ai SP3
    et sur le second PC j'ai SP6
    et sur le troisième PC j'ai "MANQUANT"

    pour ton exemple, avec seulement une gestion éventuelle de la version de windows installée et de l'emplacement des fichiers ocx sur la machine.
    Qu'entends tu par gérer la version de windows???
    Comment estce que je peux le faire et à quoi cela consiste?

    Je vais essayer la dernière solution, mais je dois dire qu'elle ne me plait vraiement pas. Mon application doit être diffuser sur toute mon entreprise et je voudrais avoir un truc nickel, histoire de ne pas ajouter de liens de partout....

    En tout cas merci pour tes lumières....

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    En fait, j'entends par là qu'il faut récupérer la version windows (xp, vista,7 ou autre) pour savoir dans quel configuration on se trouve.
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    On a la meme chose en passant par les variables Environ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub piou()
    Dim i As Integer
    i = 1
    While Environ(i) <> Empty
                Debug.Print Environ(i)
                i = i + 1
    Wend
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Par défaut
    Re-

    Alors j'ai testé ton petit bout de code sur mon PC dans Thisworkbook sur ma macro.
    J'ai obtenu i=41
    sur un nouveau classeur i=41

    J'ai essayé le code sur le second PC, sur une feuille Excel vierge j'ai obtenu i=37, sur Thisworkbook de la macro => impossible de lancer la macro car message d'erreur bibliothèque d'objets....

    Mais je ne comprend pas bien le but de ton code ni ce que j'en retir comme info pour débugger ma macro...

    J'ai aussi essayé de mettre la référence Mscomct2 qui vient de mon PC dans un fichier accessible sur le réseau pour la prendre en compte sur le second PC, et cela ne fonctionne pas.... ou je n'ai pas bien compris ton message....

    J'ai, en somme encore besoin de me faire éclairer les idées!!!
    Merci pour ton temps.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    il faut raisonner en 2 temps :
    - checker la version de windows (pour en déduire les répertoires dans lesquels tu pourras avoir les références dont tu as besoin)
    - installer la reference la plus a jour disponible sur la machine

    Le but étant de pouvoir poursuivre le code sans aucune référence manquante
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/06/2014, 12h02
  2. guide de référence plsql à recommander
    Par ICARA dans le forum PL/SQL
    Réponses: 3
    Dernier message: 16/03/2011, 23h31
  3. Réponses: 0
    Dernier message: 17/06/2010, 23h49

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