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 :

[VBA]ouvrir un formulaire d'une autre base depuis un formulaire


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 42
    Points
    42
    Par défaut [VBA]ouvrir un formulaire d'une autre base depuis un formulaire
    Bonjour à vous tous!

    Je voudrai ouvrir un formulaire dans une autre base depuis un formulaire. En cherchant un peu j'ai vu qu'il y avait un code proposé dans la FAQ.

    J'ai donc copié le code généreusement proposé par Morsi et je suis tombé sur un os! Error 91 variable ou bloc with non défini. La base s'ouvre bien mais reste désespérément vide! (pas de fenêtre bdd ni de formulaire) Et lorsque je reviens sur mon formulaire j'ai le message d'erreur.

    Je pense qu'il doit manquer une définition de paramètre mais laquelle?

    je vous recopie le code de la procédure (cf FAQ) :

    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
     
     
    Function fOpenRemoteForm(strMDB As String, _
                                            strForm As String, _
                                            Optional intView As Variant) _
                                            As Boolean
    Dim objAccess As Access.Application
    Dim lngRet As Long
     
        On Error GoTo fOpenRemoteForm_Err
     
        If IsMissing(intView) Then intView = acViewNormal
     
        If Len(Dir(strMDB)) > 0 Then
            Set objAccess = New Access.Application
            With objAccess
                lngRet = apiSetForegroundWindow(.hWndAccessApp)
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                'le premier appel à  ShowWindow semble rester sans effet
                lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE)
                .OpenCurrentDatabase strMDB
                .DoCmd.OpenForm strForm, intView
                Do While Len(.CurrentDb.Name) > 0
                    DoEvents
                Loop
            End With
        End If
    fOpenRemoteForm_Exit:
        On Error Resume Next
        objAccess.Quit
        Set objAccess = Nothing
        Exit Function
    fOpenRemoteForm_Err:
        fOpenRemoteForm = False
        Select Case Err.Number
            Case 7866:
                'mdb ouverte en mode exclusif
                MsgBox "The database you specified " & vbCrLf & strMDB & _
                    vbCrLf & "is currently open in exclusive mode.  " & vbCrLf _
                    & vbCrLf & "Please reopen in shared mode and try again", _
                    vbExclamation + vbOKOnly, "Could not open database."
            Case 2102:
                'ce formulaire n'existe pas
                MsgBox "The Form '" & strForm & _
                            "' doesn't exist in the Database " _
                            & vbCrLf & strMDB, _
                            vbExclamation + vbOKOnly, "Form not found"
            Case 7952:
                'l'utilisateur a fermer la base de données
                fOpenRemoteForm = True
            Case Else:
                MsgBox "Error#: " & Err.Number & vbCrLf & Err.Description, _
                        vbCritical + vbOKOnly, "Runtime error"
        End Select
        Resume fOpenRemoteForm_Exit
    End Function
    J'appelle ma procédure comme c'est indiqué c'est à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    call fonction ("chemin_bdd" ;" nom_formulaire")
    Merci d'avance!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call fonction (chemin_bdd , nom_formulaire)
    Si tu appelles ta fonction par le code. Il faut en plus que chemin_bdd et nom_formulaire soient des String.

  3. #3
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    mon chemin et mon formulaire sont bien définis comme des string. Il doit manquer autre chose.

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    J'espère que tu n'appelles pas la fonction fOpenRemoteForm de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call fonction ("chemin_bdd" ;" nom_formulaire")

  5. #5
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    bonjour,

    non non je mets bien "," et non ";" j'ai fait une erreur de frappe à la saisie désolé.

    Une référence manquante peut être c'est possible?

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Je ne pensais pas à la virgule : mais au terme fonction !!
    Si tu as suivi la FAQ, je ne vois pas le problème à part sur l'appel de la fonction.

  7. #7
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 42
    Points
    42
    Par défaut
    Non effectivement je mets bien fOpenRemoteForm et non "fonction"!

    merci quand même.

    la fonction est bien appelée puisque la bdd s'ouvre mais il n'y rien.

    c'est ça qu'il m'affiche dans le formulaire de lancement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Case Else:
                MsgBox "Error#: " & Err.Number & vbCrLf & Err.Description, _
                        vbCritical + vbOKOnly, "Runtime error"
    avec erreur 91
    variable objet ou variable de bloc with non définie

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/01/2024, 21h15
  2. Réponses: 6
    Dernier message: 24/11/2019, 09h16
  3. [AC-2010] Extraire des données d'une autre base depuis un formulaire
    Par cybernini230 dans le forum IHM
    Réponses: 2
    Dernier message: 27/09/2010, 12h23
  4. Réponses: 3
    Dernier message: 17/08/2009, 09h57
  5. Réponses: 3
    Dernier message: 23/08/2006, 16h27

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