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 :

Error 91 sur une ouverture de formulaire depuis une autre application. [AC-2019]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Par défaut Error 91 sur une ouverture de formulaire depuis une autre application.
    Bonjour,
    Mon niveau en VBA est faible, merci d'en tenir compte.

    J'utilisais pour faire une mise à jour d'une application la fonction "Shell", malheureusement l'anti virus installé par mon siège bloque dorénavant cette commande...
    J'essaie de trouver une solution alternative.

    Je fais une mise à jour automatique d'une application "SuiviSAV.accdb"
    Après un test de version, si mise a jour nécessaire, se lance le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Call fOpenRemoteForm("C:\SuiviSAV\MAJVersion.accdb", "FormCopieEnCours")
    Application.Quit
    j'ai fait un copié collé dans un module du code présent dans la FAQ access:
    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
    66
    67
    68
    69
    70
    Option Compare Database
     
    Private Declare Function apiSetForegroundWindow Lib "user32" _
                Alias "SetForegroundWindow" _
                (ByVal hwnd As Long) _
                As Long
     
    Private Declare Function apiShowWindow Lib "user32" _
                Alias "ShowWindow" _
                (ByVal hwnd As Long, _
                ByVal nCmdShow As Long) _
                As Long
     
    Private Const SW_MAXIMIZE = 3
    Private Const SW_NORMAL = 1
     
    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 fermé 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
    MAJVersion.accdb a pour seul but d'effectuer une copie de l'application située sur un NAS local (la nouvelle version) qui va venir écraser l'application présente sur le PC (l'ancienne version)
    Le code qui fait ça est attaché au formulaire "FormCopieEnCours" sur l'évènement load.
    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
    Private Sub Form_Load()
     
        DoCmd.Maximize
        DoCmd.ShowToolbar "Ribbon", acToolbarNo
        DoCmd.NavigateTo "acNavigationCategoryObjectType"
        DoCmd.RunCommand acCmdWindowHide
     
    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.CopyFolder "\\1xx.xx.xx.241\Public\Logiciels\SuiviSAV", "C:\SuiviSAV", True
     
    Call fOpenRemoteForm("C:\SuiviSAV\SuiviSAV.accdb", "FormBienvenue")
    Application.Quit
     
    End Sub
    J'ai aussi mis un module dans l'application "MAJVersion.accdb" avec la même fonction

    Pour tester je lance "artificiellement" la mise à jour depuis une application qui est identique, mais nommée "SuiviSAV V5.2".
    La copie se fait bien, mais j'ai un message
    Error 91, Variable objet ou variable de bloc with non définie
    de plus mon application "SuiviSAV V5.2"(ancienne version) ne se ferme pas pas plus que l'application "MAJVersion.accdb" , je suppose bloquées par l'erreur.
    Par contre la nouvelle version "SuiviSAV" s'ouvre bien .

    Merci d'avoir eu le courage de me lire jusque là et merci d'avance pour vos lumières...

  2. #2
    Membre éclairé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Par défaut
    J'ai une autre erreur, a priori c'est elle qui bloque la fermeture de l'application "SuiviSAV V5.2"(ancienne version)
    Nom : Capture.JPG
Affichages : 97
Taille : 16,4 Ko

  3. #3
    Membre éclairé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Par défaut
    Bon, ça n'a pas l'air d'inspirer grand monde

    Je vais changer d'approche et faire un nouveau sujet.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    ton code comporte beaucoup de lignes, et comme tu nous indiques juste un numéro d'erreur sans nous dire à quelle ligne cette erreur apparait, c'est l'aiguille et la botte de foin ta demande
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

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

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    bonjour vavavoum74,
    dans un de tes codes (le 3ème) figure une adresse IP en clair, sauf si elle est fictive, je te conseille vivement de la masquer.
    Même si le risque est faible, cela peut permettre à de mauvaises personnes de tenter de s'introduire dans ton réseau

  6. #6
    Membre éclairé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour vavavoum74,
    dans un de tes codes (le 3ème) figure une adresse IP en clair, sauf si elle est fictive, je te conseille vivement de la masquer.
    Même si le risque est faible, cela peut permettre à de mauvaises personnes de tenter de s'introduire dans ton réseau
    Merci Tee, c'est fait
    Je met résolu

  7. #7
    Membre éclairé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    ton code comporte beaucoup de lignes, et comme tu nous indiques juste un numéro d'erreur sans nous dire à quelle ligne cette erreur apparait, c'est l'aiguille et la botte de foin ta demande
    Merci pour ton intérêt.
    C'est vrai que je ne comprenais pas d'où venait l'erreur et pas de ligne surlignée en jaune.
    Si j'ai bien compris, je ne pouvais fermer l'appli lanceuse sans provoquer une erreur...
    J'ai donc changé de façon de faire:
    avant j'avais: ancienne version --> fermeture et lancement d'une BAT écrasant l'ancienne version relançant la nouvelle --> nouvelle version
    après moultes recherches et lectures, ne pouvant utiliser l'instruction shell car bloquée par l'antivirus sur lequel je n'ai pas la main j'ai fait une petite MDB qui fait les tests de version et ecrase l'appli qui n'est pas lancée: une sorte de launcher...

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

Discussions similaires

  1. Graphisme sur une autre application windows
    Par scat64 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 02/02/2012, 21h47
  2. Action appelant une action sur une autre application + plus flux xml
    Par Cybero dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 11/01/2011, 16h05
  3. cliquer sur une autre application
    Par Nebulix dans le forum Windows
    Réponses: 11
    Dernier message: 15/09/2010, 22h11
  4. Détecter clic de souris sur une autre application
    Par xenos dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 05/08/2010, 09h18
  5. Focus sur une autre application
    Par labrute dans le forum C++
    Réponses: 8
    Dernier message: 06/04/2009, 10h57

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