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

VBA Access Discussion :

Test pour savoir si une référence est active


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut Test pour savoir si une référence est active
    Bonjour,

    J’ai un problème sur une réference que je n’arrive pas à résoudre.

    J’ai deux fichiers mde l’un s’appelle « Test» et l’autre BaseApplication je voudrais à partir de la base application tester si la base Test est active.

    Le code que j’essai d’utilise est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function ReferenceActive(Nom As String) As Boolean
        Dim i As Integer
        Dim NbreRef As Integer
     
        NbreRef = Application.VBE.ActiveVBProject.References.Count
     
        For i = 1 To NbreRef
            If Application.VBE.ActiveVBProject.References(i).Name = Nom Then
                ReferenceActive = True
                Exit Function
            End If
        Next i
    End Function
    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
    Sub VerifierTest(strCheminFrontale As String)
    Dim ref As Reference
    Dim strCheminReference As String
     
    On Error GoTo MajTest_error
     
    Call ReferenceActive("Test")    
     
    MajTest_error:
     
    Select Case Err.Number
     
    Case 29060 ' Fichier non trouvé
                  intreponse = MessageBox(hwnd, "Vous devez choisir le CHEMIN de la Base Test" _
                      ap_AppTitle(), (mb_yesno + MB_ICONQUESTION))
     
                  If intreponse = vbYes Then
                    Call boiteDialogue
                    strCheminReference = strValeur
                    Call ActiverReference(strCheminReference)
                  Else
                    strCheminReference = strValeur
                    Call ActiverReference(strCheminReference)
                  End If
     
    Case 32813 ' bibliothèque existante
                 Debug.Print "la réference exite deja"
     
    Case Else    
     
    End Select
     
    End Sub
    Que le fichier existe ou pas la Case Err.Number est toujour à 0

    Merci pour votre aide.

    Salutations

  2. #2
    Membre expérimenté
    Avatar de mumen
    Homme Profil pro
    Développement à façon multisecteur.
    Inscrit en
    Mars 2004
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Développement à façon multisecteur.

    Informations forums :
    Inscription : Mars 2004
    Messages : 566
    Points : 1 381
    Points
    1 381
    Par défaut
    Bonjour

    Tu t'es embrouillé les pinceaux. La première procédure ne fait que vérifier dans les références qu'un nom y est trouvé. Il ne peut pas planter et retourner les erreurs que tu dépistes. Il s'utilise comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If ReferenceActive("Test") then
    End if
    A tout hasard, que veux tu dire par "base active" ?

  3. #3
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Bonjour,

    ta fonction ne peut pas fonctionner pour tester une autre base de données. Tel quel elle test la fonction renvoie les références de la base active. Si tu veux tester les ref. d'une autre bdd il faut que tu instancie la seconde base.

    J'ai modifié ta fonction pour que ça fonctionne.

    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
    Function ReferenceActive(strNom As String, strChemin as String) As Boolean
        Dim i As Integer
        Dim NbreRef As Integer
        Dim dbAccess As New Access.Application
     
       dbAccess.OpenCurrentDatabase strChemin
       dbAccess.Visible = False
     
        NbreRef = dbAccess.VBE.ActiveVBProject.References.Count
     
        For i = 1 To NbreRef
            If dbAccess.VBE.ActiveVBProject.References(i).Name = strNom Then
                ReferenceActive = True
                Exit Function
            End If
        Next i
     
        dbAccess.CloseCurrentDatabase
     
    End Function
    pour l'appeler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        If Not (ReferenceActive("VBA", "C:\Mabase.accde")) Then MsgBox "Référence non active."
        MsgBox "Fin du test"
    Ceci test la référence "Visual Basic For Applications"

    @++

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonsoir mumen, Bonsoir Dolphy35,


    Merci pour vos réponses.

    Et toutes mes excuses car je pense que je me suis mal expliqué.

    La base test.mdb est en fait une bibliothèque que je voudrais lier comme n’importe quelle référence VBA à la base BaseApplication.mdb.

    Donc je voudrais tester si la bibliothèque Test.mdb est bien activer, sinon la rajouter.

    Salutations

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour,

    J'ai également un base Access qui me sert de bibliothèque.
    J'ai une procédure assez lourde qui me permet de vérifier l'ensemble des librairie installées en fonction de l'environnement du PC (XP, Windows7, etc).

    Cela dit, voici ce que tu pourrais faire.


    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
    Private Sub VerifRefTestMDB()
     
    Dim Ref As Reference
    Dim OuiNon As Long
    OuiNon = 0
     
    For Each Ref In References 'Balaie toutes les références
        If Ref.Name = "Test" Then
            OuiNon = 1
        End If
    Next Ref
     
    If OuiNon = 0 Then
        References.AddFromFile CheminDeGDBTest
    End If
     
    End Sub
    De plus, je te conseille de compiler ta librairie en *.mde. Ceci, afin d'éviter que des utilisateurs puissent intervenir dedans, surtout si tu distribues ton application.

    Cordialement

    Christophe
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour marsouin_89,

    Merci pour ta réponse, et comme j’aimerais tant jeter un œil sur ta procédure !!!

    Je ne distribue pas mon application, elle est destinée à mon association de retraite. De plus je ne suis pas programmeur et je fais cela suivant mes modestes connaissances. C’est un jeune programmeur qui, à la fin de ma carrière, m’a donné le virus du code.
    Bon, j’arrête de raconter ma vie...

    Pour revenir à ta réponse, ton code me convient parfaitement pour la détection et la création de la référence.

    Par contre quand la référence est indiquée manquante, j’ai le message suivant :

    « Votre projet contient une référence incomplète ou rompue »

    Je clique sur le message et le code se poursuit.

    Est-ce que l’on peut éviter ce message ?

    Cordialement

    Jacques

  7. #7
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour,

    Je ne vois pas pourquoi tu as un problème.
    Si tu ne distribues pas ton application, il n'y a aucunes raisons pour que ta référence soit manquante à moins que tu ne la déplace régulièrement.

    Donc, ma question est : comment ce fait il que tu te retrouves avec une référence manquante ?

    Cordialement

    Christophe
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour,

    Oui en effet l'application est déplacée régulièrement, et c'est pour cela
    que je me retrouve avec une référence manquante.

    Cordialement

    Jacques

  9. #9
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir,

    Mauvais plan

    Il ne faut pas prendre l'habitude de déplacer ton application.
    Tu ne déplaces l'emplacement d'installation d'Excel tous les 4 matins.
    Ce doit être pareil pour ton application.

    Explique moi la raison de ce déplacement.

    Cordialement

    Christophe
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour,


    Explique-moi la raison de ce déplacement

    Il arrive fréquemment lorsqu'on a besoin d'aide, qu'on demande à certains de nos adhérents (hélas pas toujours les mêmes) de nous aider avec leur matériel, en l'occurrence leur portable.

    Cordialement.

    Jacques

  11. #11
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir,

    Désolé pour le retard de réponse, mais j'ai beaucoup de mal à trouver du temps pour venir faire un tour sur le forum.

    Donc, si je comprends bien, tu es amené à utiliser ton application sur d'autres PC le temps de ton intervention.
    Si c'est le cas, alors défini un emplacement unique de ton application ainsi que pour ta librairie.

    Par exemple, tu défini que, quelque soit le PC, ton application est installée dans C:\Program files\MonAppliAccess.
    Dans ce répertoire il y aura ton application ainsi que ta librairie.
    De ce fait, tu ne perdras jamais le chemin de ta librairie.

    Cordialement

    Christophe
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

Discussions similaires

  1. Comment savoir si une feuille est active ?
    Par gryffondor8392 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/05/2011, 11h25
  2. Comment savoir si une contrainte est active ou non.
    Par dim07 dans le forum Développement
    Réponses: 3
    Dernier message: 02/09/2009, 21h03
  3. Savoir si une applet est active dans la page html
    Par pcouas dans le forum Applets
    Réponses: 1
    Dernier message: 26/03/2009, 08h24
  4. Réponses: 12
    Dernier message: 11/02/2009, 14h15
  5. Methode pour savoir si une CheckBox est cochée
    Par poulette3000 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/07/2007, 10h54

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