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 :

Supprimer une référence 2010


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 190
    Par défaut Supprimer une référence 2010
    Bonjour,

    J'ai crée un fichier Excel avec des macros avec une version d'Excel 2003.
    Avec les références suivantes activées:
    - Microsoft Excel 11.0 Object Library
    - Microsoft Outlook 11.0 Object Library

    Lorsque ce fichier est ouvert avec une version d'Excel 2010 (sur un autre PC),
    les références sont mises a jour automatiquement et sauvées.
    - Microsoft Excel 14.0 Object Library
    - Microsoft Outlook 14.0 Object Library

    Lorsque ce même fichier est ensuite ouvert avec une version d'Excel 2003, ces deux références sont manquantes:
    - MISSING Microsoft Excel 14.0 Object Library
    - MISSING Microsoft Outlook 14.0 Object Library.
    Les macros ne fonctionnent plus.

    Manuellement, il faut les décocher et aller chercher celles de 2003:
    - C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE
    - C:\Program Files\Microsoft Office\OFFICE11\MSOULT.OLB

    Est-il possible de gérer tout ceci automatiquement à l'ouverture du fichier ?
    Dans le Private Sub Workbook_Open() ?


    Pour rajouter une réfenrece, ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     On Error Resume Next
     With ThisWorkbook.VBProject.References
     Application.DisplayAlerts = False
     .AddFromFile "C:\Program Files\Microsoft Office\OFFICE11\MSOUTL.OLB"
     End With
     Application.DisplayAlerts = True
     On Error GoTo 0
    Mais il faut d'abord supprimer l'ancienne avant.. et la, je coince.


    Merci de m'aider.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, je te conseille de lire Early ou Late Binding et donc de développer en Early Binding et de déployer en Late Binding

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    vois ce tuto pour désactiver les Ref manquantes...

    http://silkyroad.developpez.com/VBA/...Editor/#LIII-A

    cordialement,

    Didier

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 190
    Par défaut
    @Ormonth,

    J'ai suivi le tuto.
    J'ai activé manuellement la référence Microsoft Visual Basic for Applications Extensibility 5.3.
    Je l'ai placé en première priorité.

    J'ai ensuite utilisé ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Ref As Reference
     
    'La procédure boucle sur la collection de références et supprime celles qui sont 'spécifiées manquantes.  
    For Each Ref In ThisWorkbook.VBProject.References
        If Ref.IsBroken = True Then _
            ThisWorkbook.VBProject.References.Remove Ref
    Next Ref
    Mais au moment de vouloir supprimer la référence manquante, j'ai un message d'erreur:
    Run-time error '48': Error in loading DLL

    Une idée ?

    @kiki29:

    La notion de Early ou Late Binding m'est encore inconnue..
    Je vais devoir d'abord decortiquer tout ca..

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Hors contexte en situation, non.
    Sinon, ce que Kiki29 t'as indiqué est les plus recommandé au niveau portabilité, même si on le déconseille dans un environnement homogène.

    donc regardes les références et tutos sur le sujet dans DVP, c'est bien plus simple que ça paraît

    En Early Binding (liaison anticipée), tu indiques au compilateur où chercher précisément en lui donnant la référence en clair, ce qui cause le pb ici) et te permet de par là même de profiter de l'Intellisens, de l'aide dynamique, des constantes prédéfinies.

    En Late Binding (liaison tardive), il sait que tu as invoqué un objet, il va aller à la pêche pour le trouver (d'où l'absence de risque de conflit, vu qu'il n'a pas de référence définie).

    Tu fais des exos avec les tutos DVP et surtout en observant ce qui se passe dans la fenêtre Variables Locales du VBE

    Si le terme de liaison ne te dit trop rien, il faut que tu vois les tutos sur les variables objets du coup. On ne fait pas d'attribution de valeur à une variable objet, on l'instancie, on crée une liaison, on pointe sur l'objet considéré.
    Citation Envoyé par WikiDictionnaire
    Action d’instancier, d’initialiser en programmation, à partir d’un espace mémoire réservé, un objet à partir d’un ensemble de caractéristique, appelé « classe ».


    cordialement,

    Didier

Discussions similaires

  1. [XL-2010] Erreur DLL dans une référence à supprimer
    Par ateppaz dans le forum Excel
    Réponses: 4
    Dernier message: 18/06/2015, 11h11
  2. Supprimer une référence de clés étrangère orpheline.
    Par berceker united dans le forum Développement
    Réponses: 0
    Dernier message: 28/01/2015, 15h36
  3. [XL-2010] Supprimer une référence
    Par stefun91 dans le forum Excel
    Réponses: 3
    Dernier message: 11/09/2013, 14h01
  4. supprimer une table mysql depuis un bouton vs 2010
    Par bmad15 dans le forum Visual C++
    Réponses: 3
    Dernier message: 29/04/2011, 01h03
  5. Supprimer une donnée et toutes ses références
    Par calagan99 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/06/2007, 15h41

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