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 :

[Excel] - QueryTable dans Excel Piloté par Access


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [Excel] - QueryTable dans Excel Piloté par Access
    Bonjour

    Dans un fichier excel, j'ai une feuille avec une requête crée à partir de microsoft query qui va se connecter à une vue dans une base oracle.

    J'utilise la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim wks As Excel.Worksheet
        Set wks = BaseDorsal.Worksheets("Extract_Octale")
        wks.Select
        wks.QueryTables(1).Refresh BackgroundQuery:=False
    qui marche dans Excel

    Je veuw maintenant piloter ceci par Access à l'aide d'automation.

    J'ai le message suivant : erreur 7 mémoire insuffisante

    Quelqu'un a-t-il une idée

    Starec

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Par défaut
    Bonjour,

    Pour bien comprendre le problème, c'est bien à l'exécution de la requête et non au démarrage d'ACCESS que cette erreur apparaît ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Par défaut
    Parce que si c'est à l'exécution c'est que le système n'alloue pas assez de mémoire à la transaction. C'est le paramètre MaxLocksPerFile du Registre de Windows qui est trop bas.

    Pour résoudre le problème il faut augmenter le paramètre MaxLocksPerFile du Registre de Windows.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    C'est bien au lancement de la requête

    Malheureusement je ne peux changer MaxLocksPerFile, c'est sur un serveur Citrix, avec Excel 2003 version serveur.

    D'autres idées ?

    Starec

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Par défaut
    Citation Envoyé par Starec
    Malheureusement je ne peux changer MaxLocksPerFile, c'est sur un serveur Citrix, avec Excel 2003 version serveur.
    Et de façon temporaire ?

    http://support.microsoft.com/?scid=k...86153&x=8&y=11

    Method 2: Using SetOption to change MaxLocksPerFile Temporarily
    NOTE: The sample code in this article uses Microsoft Data Access Objects. For this code to run properly, you must reference the Microsoft DAO 3.6 Object Library. To do so, click References on the Tools menu in the Visual Basic Editor, and make sure that the Microsoft DAO 3.6 Object Library check box is selected.

    Note Changes made to the MaxLocksPerFile setting by using the SetOption method will only be available through the current session of Data Access Objects (DAO). Queries that are run through the Microsoft Access user interface will still use the settings in the registry.

    The following code sample sets MaxLocksPerFile to 200,000 before executing an update operation inside a transaction:
    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
    Sub LargeUpdate()
       On Error GoTo LargeUpdate_Error
       Dim db As DAO.Database, ws As DAO.Workspace
     
       ' Set MaxLocksPerFile.
       DBEngine.SetOption dbMaxLocksPerFile, 200000
     
       Set db = CurrentDb
       Set ws = Workspaces(0)
     
       ' Perform the update.
       ws.BeginTrans
       db.Execute "UPDATE BigTable SET Field1 = 'Updated Field'", _
             dbFailOnError
     
       ws.CommitTrans
     
       db.Close
       MsgBox "Done!"
       Exit Sub
     
    LargeUpdate_Error:
       MsgBox Err & " " & Error
       ws.Rollback
       MsgBox "Operation Failed - Update Canceled"
       End Sub
    Je pense qu'il doit y avoir un version française de cette page

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    essaye outil options avancé et décoche ouvrir avec enregistrement verrouillé

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Désolé Random, t'as solution ne fonctionne pas.

    Désolé chouks, ta solution fonctionne sur une table Access, hors c'est une feuille Excel que je mets à jour par l'intermédiaire d'Access par automation.

    Starec

Discussions similaires

  1. [XL-2010] Récupérer dans Excel une donnée d'une procédure Access lancée depuis Excel
    Par stargates01 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2013, 10h27
  2. Réponses: 1
    Dernier message: 18/01/2013, 23h19
  3. Peut-on ecrire vba dans excel comme dans access ?
    Par docjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/10/2009, 07h38
  4. Réponses: 1
    Dernier message: 15/11/2007, 13h51
  5. Réponses: 7
    Dernier message: 20/09/2006, 11h04

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