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 :

Désactivation d'une référence VBE6


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Désactivation d'une référence VBE6
    Bonjour,

    La macro ci-dessous semble fonctionner, elle s'arrête bien sur la ligne en rouge, mais la référence n'est pas décochée.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Private Sub Workbook_Open()
    On Error Resume Next
    Dim i%, N%
    N = Application.VBE.ActiveVBProject.References.Count
    For i = 1 To N
    If Application.VBE.ActiveVBProject.References.Item(i).Name = "MANQUANT : RefEdit Control" Then
    Application.VBE.ActiveVBProject.References.Remove _  
    Application.VBE.ActiveVBProject.References.Item(i)
    End If
    Next
    End Sub
    Si quelqu'un a une idée à ce sujet, je le remercie d'avance.

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonjour,jacques_jean,

    je suppose que la référence reste coché , car il doit y avoir sur un des userforms du projets ce fameux contrôle refEdit, il faut peui être passé sur tous ces userforms..

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    es-tu bien certain de l'intitulé : ""MANQUANT : RefEdit Control" ?

    Ajoute donc une listbox List1 et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim i%, N%
    N% = Application.VBE.ActiveVBProject.References.Count
    For i% = 1 To N%
      List1.additem Application.VBE.ActiveVBProject.References.Item(i%).Name 
    Next
    juste pour y voir mieux clair

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Avec une instruction On error resume next il est indispensable
    d'évaluer chaque condition en 2 temps à l'aide d'une variable tampon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    on error resume next
    maVar=monAffectation
    if maVar=maValeur_de_test then ...
    Au cas contraire, en cas d'erreur sur l'affectation, la condition If se comportera comme si elle était vrai
    et comme la gestion des références est bugguée pour les références manquantes ...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci à vous pour votre réponse rapide.

    Avec la proposition de Ucfoutu, je m'aperçois qu'en effet il y a bien 6 références cochées mais que la 6ème, qui dans "Références disponibles" est intitulée : "MANQUANT : RefEdit Control", n'est pas reconnue et le nom ne s'ajoute pas dans la liste.

    Ce que confirme également la réponse de DarkVader.

    J'ai essayé en indiquant pour le nom : RefEdit ou RefEdit.dll mais aucun résutat.

    Je précise qu'il s'agit d'un fichier qui navigue entre 2 versions d'Excel (2000 et 2003).

    Pour cette ligne : "MANQUANT : RefEdit Control" le chemin indiqué en bas est :
    "C:\Program Files\Microsoft Office\Office11\RefEdit.dll"

    Mais bien sûr, sur la version 2000 le fichier se trouve dans :
    "C:\Program Files\Microsoft Office\Office"

    J'arrive à remplacer l'un par l'autre en manuel (en désactivant les macros) puis en enregistrant le fichier, mais le but serait évidemment d'automatiser.

    Peut-être qu'il ny a pas d'autre solution que de demander à l'utilisateur possédant la version 2003 d'enregistrer le fichier en version 2000 ?

    Remarque : juste pour voir j'ai tenté en créant un répertoire "Office11" sour "Microsoft Office" et d'y copier la DLL mais bien sûr aucun résultat.

    JackOuYa : j'ai regardé les contrôles du formulaire mais je n'ai rien trouvé. J'ai donc fait une copie du fichier et supprimé le formulaire, et toujours pas de solution.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bon... (il fallait s'y attendre) ...
    Maintenant : je n'ai pas mon pc avec Excel disponible à portée de main, mais vais essayer de mémoire :

    Essaye (sans garantie ni du gouvernement ni du vieil endormi que je suis) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Set toto = ThisWorkbook.VBProject.References
      For Each toto In Application.VBE.ActiveVBProject.References
        If toto.IsBroken = True Then
          Application.VBE.ActiveVBProject.References.Remove toto
        End If
      Next toto
    EDIT :
    il semble finalement bien que je ne suis pas si endormi que je le pensais :
    http://msdn.microsoft.com/en-us/libr...ffice.11).aspx

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bon... (il fallait s'y attendre) ...
    Maintenant : je n'ai pas mon pc avec Excel disponible à portée de main, mais vais essayer de mémoire :

    Essaye (sans garantie ni du gouvernement ni du vieil endormi que je suis) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Set toto = ThisWorkbook.VBProject.References
      For Each toto In Application.VBE.ActiveVBProject.References
        If toto.IsBroken = True Then
          Application.VBE.ActiveVBProject.References.Remove toto
        End If
      Next toto
    et moi, de mémoire, je serais surpris que ton code soit fonctionnel
    (pour la même raison que citée précédemment).

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

Discussions similaires

  1. [VBA] Ajouter dynamiquement une référence
    Par jpharand dans le forum VBA Access
    Réponses: 23
    Dernier message: 16/04/2010, 23h28
  2. Comment stocker une référence vers un TTreeNode ds un DFM ?
    Par phplive dans le forum Composants VCL
    Réponses: 1
    Dernier message: 19/07/2005, 12h33
  3. [SOAP][Web Service] erreur création d'une référence Web
    Par Maximil ian dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 20/06/2005, 13h29
  4. Réponses: 5
    Dernier message: 22/12/2004, 16h50
  5. Une référence à un élément de sa propre table
    Par szdavid dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/06/2004, 10h46

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