Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Runtime

Runtime Forum destiné à recevoir toutes vos questions concernant le Runtime (empaquetage, déploiement...)

Réponse
 
Outils de la discussion
Vieux 16/01/2008, 02h24   #1 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 416
Par défaut [2007]Pb ajout référence par le code

Bonjour à tous,

J'utilise le code de la FAQ pour contrôler les références d'une appli tournant en runtime 2007.(Lister, ajouter, supprimer).
Executé en mde ou sur un poste en runtime (xp ou vista) l'ajout me génère une erreur
Citation:
Requested type library or wizard is not a VBA project
.
La liste peut aussi me générer ce genre d'erreur (sur le poste xp).
La compilation ne donne pas d'erreur.
Code :
Private Sub cmdListerReferences_Click()
GetReferences
End Sub
Function GetReferences()
Dim Ref As Reference
On Error GoTo Err_GetReferences
For Each Ref In Application.References
    MsgBox "Référence : " & Ref.Name & " - Version : " & Ref.Major & "." _
                                            & Ref.Minor & " - FullPath : " & Ref.FullPath, , "xxx"
Debug.Print "Réf : " & Ref.Name & " - Version : " & Ref.Major & "." _
                                            & Ref.Minor & " - FullPath : " & Ref.FullPath
Next Ref
Exit_GetReferences:
   Exit Function
Err_GetReferences:
    MsgBox "Erreur Form_frmAccueil_GetReferences n°: " & Err.Number & vbCrLf & Err.Description, , "xxx"
    Resume Exit_GetReferences
End Function
Private Sub cmdSupprimerReference_Click()
 SupprimerReferences
End Sub
Public Sub SupprimerReferences()
 
          Dim Ref As Reference, NomRef As String
 
On Error GoTo Err_SupprimerReferences
     NomRef = InputBox("Nom de la référence", "xxx - Suppression d'une référence")
     Debug.Print "Nom "; NomRef
     If ExisteReference(NomRef) Then
          Set Ref = References(NomRef)
          References.Remove Ref
          MsgBox "Référence supprimée", , "xxx - Suppression d'une référence"
    Else
        MsgBox "La référence n'a pas été trouvée", , "xxx - Suppression d'une référence"
     End If
 
 MsgBox "Il y a " & Application.References.Count & " références cochées.", , "xxx"
    For Each Ref In References
        If Ref.IsBroken Then
            MsgBox "GUID des références rompues:" & Ref.GUID, , "xxx"
        End If
    Next Ref
Exit_SupprimerReferences:
   Exit Sub
Err_SupprimerReferences:
    MsgBox "Erreur Form_frmAccueil_SupprimerReferences n°: " & Err.Number & vbCrLf & Err.Description, , "xxx"
    Resume Exit_SupprimerReferences
End Sub
Private Function ExisteReference(NomRef As String) As Boolean
     Dim Ref As Reference
     ExisteReference = False
     For Each Ref In Application.References
          If Ref.Name = NomRef Then
               ExisteReference = True
          End If
     Next Ref
End Function
Private Sub cmdAjouterReferences_Click()
On Error GoTo Err_cmdAjouterReferences_Click
    AjouterReferences
Exit_cmdAjouterReferences_Click:
   Exit Sub
Err_cmdAjouterReferences_Click:
    MsgBox "Erreur Form_frmAccueil_cmdAjouterReferences_Click n°: " & Err.Number & vbCrLf & Err.Description, , "xxx"
    Resume Exit_cmdAjouterReferences_Click
End Sub
Private Sub AjouterReferences()
    Dim CheminReference As String
     CheminReference = OuvrirDialogueFichier()
     Debug.Print "CheminReference " & CheminReference
     AjouterReference (CheminReference)
     'AjouterReference ("C:\Program Files\Microsoft Office\Office12\VVIEWER.DLL")
     'AjouterReference ("C:\Windows\system32\scrrun.dll")
 
End Sub
Private Sub AjouterReference(CheminRef As String)
     References.AddFromFile (CheminRef)
     MsgBox "Référence ajoutée : " & CheminRef, , "xxx"
End Sub
Auriez-vous une idée?

Merci de votre attention
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/01/2008, 10h13   #2 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 910
Envoyer un message via MSN à jpcheck
Par défaut

salut,
petite astuce, plus rapide pour les references, tu peux voir la fonction isborken normalement, ca t'évite de parcourir toute les références de ton projet. Quant à la fonction OuvrirDialogueFichier() le code vérifie-t-il que le retour n'est pas null (clic sur annuler)... ?
__________________
Piou-Piou
Poussin Developpeur

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

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/01/2008, 10h57   #3 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 416
Par défaut

Bonjour,

Vu pour isBroken, ça donne cela:
Code :
Private Sub cmdBroken_Click()
Dim Ref As Reference, cptRef As Long
cptRef = 0
    For Each Ref In References
        If Ref.IsBroken Then
            MsgBox "GUID des références rompues:" & Ref.Guid, , "xxx"
        Else
            cptRef = cptRef + 1
        End If
    Next Ref
    MsgBox "non rompues : " & cptRef, , "xxx - Références rompues"
End Sub
J'ai aussi ajouté un test d'annulation de OuvrirDialogueFichier, mais cela ne resoud pas mon problème...
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/01/2008, 11h01   #4 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 910
Envoyer un message via MSN à jpcheck
Par défaut

oki,
en pas à pas, sais-tu d'où l'erreur surgit inopinément ?
__________________
Piou-Piou
Poussin Developpeur

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

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/01/2008, 11h17   #5 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 416
Par défaut

C'est à dire qu'en runtime je ne sais pas faire de debugage!
Sur le poste de developpement tout est ok.
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/01/2008, 11h28   #6 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 910
Envoyer un message via MSN à jpcheck
Par défaut

d'accord,
je ne suis pas spécialiste pour la partie runtime.
Mais si c'est pas trop contraignant tu peux faire des debug.print tout du long (ligne par ligne ou instruction par instruiction) pour voir à jusqu'où le code tourne correctement.
__________________
Piou-Piou
Poussin Developpeur

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

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/01/2008, 11h47   #7 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 416
Par défaut

Tu me donnes une idée:
Je ne l'ai jamais fait mais je vais générer mon package sans faire un mde et voir si je peux debugger!
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/01/2008, 16h19   #8 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 416
Par défaut

Le package généré avec le mdb au lieu du mde fonctionne sur le poste en runtime.
Il s'agit donc d'un pb lié à la compilation mde.
C'est une appli de test qui ne comporte qu'un formulaire et les boutons pour lancer les fonctions: lister, creer, supprimer, lister les ref rompues.
Plus les modules pour la fonction OuvrirDialogueFichier.
Tout est en Option Explicit.
Aucune erreur à la compilation.

Peut-il s'agir d'un pb de référence?
Je rappelle l'erreur donnée par la gestion d'erreur:
Citation:
n°40179;La biblio de type ou l'assist requis n'est pas un projet VBA
.
J'effectue mes tests en ajoutant/supprimant CDO (cdosys.dll) ou MSForms (FM20.dll).


Merci de votre aide. Je pense que si je peux corriger ce pb "simple" j'aurai des clés pour la kyrielle d'autre pb qui se présente à moi!

EDIT: j'ai viré tout ce que je pouvais (OuvrirDialogueFichier et modules associés), j'ai mis le chemein en dur
Citation:
Private Sub AjouterReferences()

On Error GoTo Err_AjouterReferences

AjouterReference ("C:\Windows\system32\FM20.dll")
Exit_AjouterReferences:
Exit Sub
Err_AjouterReferences:
MsgBox "Erreur Form_frmAccueil_AjouterReferences n°: " & Err.Number & vbCrLf & Err.Description, , "ANAsoft"
Resume Exit_AjouterReferences

End Sub
et c'est pareil!
Je suis maudit ou quoi!
__________________
Un seul conseil: la règle des 3S.

Dernière modification par tAKAmAkA ; 16/01/2008 à 16h32
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/06/2008, 00h57   #9 (permalink)
Membre éprouvé
 
Date d'inscription: novembre 2006
Âge: 45
Messages: 416
Par défaut

J'ai lu, ici même, que les modifications de références sont tout bonnement impossibles en mde!
__________________
Un seul conseil: la règle des 3S.
tAKAmAkA est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Runtime

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide