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 :

Projet ou bibliothèque introuvable


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut Projet ou bibliothèque introuvable
    Bonjour,
    Suite à ma précédente discussion https://www.developpez.net/forums/d1...e-introuvable/, Mercato m'a expliqué que selon les versions, certaines références deviennent manquantes.

    Je dois livrer une nouvelle version, et je vais avoir le même problème.
    que dois-je faire pour ne plus avoir de bibliothèque manquante ?
    Dois-je décocher MZTools3VBA dans mes références avant d'enregistrer et de livrer la version ?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Tu fais sans doute allusion à l'ai mercatog

    A toute fin utile, voici un code ayant pour objet la suppression des références manquantes.
    Je suggèrerais de l'intégrer à l'évènement Open du classeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim ListRef As Object
    Dim Ref As Reference
     
    Set ListRef = Application.ThisWorkbook.VBProject.References
     
    For Each Ref In ListRef
       If Ref.IsBroken = False Then
            MsgBox Ref.Name
        Else
            ListRef.Remove Ref
        End If
    Next Ref
    Set ListRef = Nothing

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Pour réparer ta référence :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Option Explicit
    Sub RepareReference()
    Dim wbkCible As Excel.Workbook      'Classeur à examiner
    Dim refs                            'Collection des références
    Dim ref                             'référence
    Dim GUIDref As String               'GUID
    Dim Existe As Boolean
     
      ' Exemple avec Microsoft Scripting Runtime - {420B2830-E718-11CF-893D-00A0C9054228}
      GUIDref = "{420B2830-E718-11CF-893D-00A0C9054228}"
      Set wbkCible = ThisWorkbook   'ou autre classeur
      Set refs = wbkCible.VBProject.References
      If refs Is Nothing Then Exit Sub   'Aucune référence
      For Each ref In refs
        If ref.GUID = GUIDref Then
          If ref.IsBroken Then
            refs.Remove ref
            Existe = True
          End If
        End If
      Next
      If Existe Then
        On Error GoTo fin
        refs.AddFromGuid GUID:=GUIDref, Major:=1, Minor:=0
        On Error GoTo 0
      End If
    Exit Sub
    fin:
      MsgBox "Impossible d'activer la référence" & vbLf & GUIDref
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  4. #4
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Marcel
    J'ai essayé ton code (dans thisworkbook Open), mais j'ai un problème "Erreur de compilation - type défini par l'utilisateur non défini" (Il n'y a que Microsoft pour produire des messages pareils ;>)
    sur la ligne Bonjour Patrice,
    Je ne comprends pas très bien comment utiliser ton code, il ne s'agit pas de réparer une bibliothèque, mais de décocher "Manquant" automatiquement ?

    Merci en tous les cas à vous deux.

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par mouftie Voir le message
    Bonjour Patrice,
    Je ne comprends pas très bien comment utiliser ton code, il ne s'agit pas de réparer une bibliothèque, mais de décocher "Manquant" automatiquement ?
    Merci en tous les cas à vous deux.
    Comme te l'a indiqué Mercatog, ce code décoche le MANQUANT, puis rétablit bonne la référence (dont il faut connaitre le GUID).

    Tu peux lister les références (et leur GUID) avec ce code (établir une référence à Microsoft Visual Basic for application Extensibility x.x)

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Option Explicit
    Option Private Module
    Sub ListerRéferences()
    ' Liste les références du Projet du classeur actif
    '
    Const nomMsg$ = "Lister les références"
    Const errWbk$ = "Ouvrir un classeur avant d'éxécuter cette commande."
    Const errRef$ = "Ce classeur ne contient aucune reference."
    '
    Dim wbkCible As Excel.Workbook            'Classeur à examiner
    Dim wbkRapport As Excel.Workbook          'Rapport
    Dim cell As Excel.Range                   'Cellule rapport
    Dim références As VBIDE.References        'Collection des références
    Dim référence As VBIDE.Reference          'Référence
     
    'Vérifier le classeur
    If Application.ActiveWorkbook Is Nothing Then
      MsgBox errWbk, vbCritical, nomMsg
      Exit Sub
    End If
    Set wbkCible = Application.ActiveWorkbook
     
    'Vérifier la collection de références
    Set références = wbkCible.VBProject.References
    If références Is Nothing Then
      MsgBox errRef, vbCritical, nomMsg
      Exit Sub
    End If
     
    'Ajouter le rapport
    Set wbkRapport = Application.Workbooks.Add(xlWBATWorksheet)
    Set cell = wbkRapport.Worksheets(1).Range("A1")
    cell.Offset(, 1).Formula = "Fichier"
    cell.Offset(1, 1).Formula = "Chemin"
    cell.Offset(, 2).Formula = wbkCible.Name
    cell.Offset(, 2).Font.Bold = True
    cell.Offset(1, 2).Formula = wbkCible.Path
    Set cell = cell.Offset(3)
    'Titres de colonne
    cell.Offset(, 0).Formula = "Name"
    cell.Offset(, 1).Formula = "IsBroken"
    cell.Offset(, 2).Formula = "FullPath"
    cell.Offset(, 3).Formula = "GUID"
    cell.Offset(, 4).Formula = "Minor"
    cell.Offset(, 5).Formula = "Major"
    cell.Offset(, 6).Formula = "BuiltIn"
    cell.Offset(, 7).Formula = "Description"
    cell.CurrentRegion.Font.Bold = True
    Set cell = cell.Offset(1)
    'Lister les propiétes des références
    For Each référence In références
     On Error Resume Next
     cell.Offset(, 0).Formula = référence.Name
     cell.Offset(, 1).Formula = référence.IsBroken
     cell.Offset(, 2).Formula = référence.FullPath
     cell.Offset(, 3).Formula = référence.GUID
     cell.Offset(, 4).Formula = référence.Minor
     cell.Offset(, 5).Formula = référence.Major
     cell.Offset(, 6).Formula = référence.BuiltIn
     cell.Offset(, 7).Formula = référence.Description
     On Error GoTo 0
     Set cell = cell.Offset(1)
    Next référence
    cell.CurrentRegion.EntireColumn.AutoFit
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  6. #6
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut Sub ListerRéferences()
    Bonjour Patrice,
    Désolée d'avoir tardé à répondre.
    J'ai essayé ton code qui demande "VBIDE.References ". Je ne la trouve pas dans ma bibliothèque.
    Ou puis-je la récupérer, stp ?

    Merci pour ton aide

  7. #7
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut Sans décocher les références
    Bonjour,
    J'ai trouvé sur le site une solution possible, qui semble fonctionner (test sur un poste seulement)

    De la part d'un invité du site:

    "Pour des instructions qui relève de vba comme trim left... Vba.trim vba.left."
    Quand tu ouvre ton fichier xls tu collectes les libraires! Quand ton voisin l'ouvre il fait la même chose. Si les versions de windows et/ou Excel sont différentes les librairies entre en conflit les une aux autre.

    Ainsi la fonction left("toto",1) produira une erreur; alors que vba.left("toto",1) n'en produira pas! " fin de citation


    Maintenant, j'ai également trouver ce tuto sur les références https://silkyroad.developpez.com/VBA...Editor/#LIII-A mais je me retrouve avec le problème précédent, à savoir "Dim Ref As Reference => Type défini par l'utilisateur non défini"...

    Donc je ne clôture pas, j'attends la réponse de Patrice sur "VBIDE.References "

    Merci

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par mouftie Voir le message
    Bonjour Patrice,
    Désolée d'avoir tardé à répondre.
    J'ai essayé ton code qui demande "VBIDE.References ". Je ne la trouve pas dans ma bibliothèque.
    Ou puis-je la récupérer, stp ?
    C'est :
    Microsoft Visual Basic for Applications Extensibility x.x

    Chez moi :
    C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. erreur "Projet ou bibliothèque introuvable"
    Par pcouas dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 13/11/2008, 07h01
  2. Chr$ : Projet ou bibliothèque introuvable
    Par rainbow14 dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/10/2007, 23h06
  3. Projet ou bibliothèque introuvable
    Par diatta dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/06/2007, 15h09
  4. projet ou bibliothèque introuvable
    Par kickoune dans le forum Excel
    Réponses: 4
    Dernier message: 29/05/2007, 18h26
  5. Réponses: 3
    Dernier message: 07/06/2006, 16h45

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