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 :

Intercepter message d'erreur + compacter pendant exécution macro


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Août 2010
    Messages : 41
    Points : 30
    Points
    30
    Par défaut Intercepter message d'erreur + compacter pendant exécution macro
    Bonjour,

    Mon appli Access permet aux utilisateurs de paramétrer un enchainement de procédures diverses, de l'exécution d'une requête Access à la copie de fichiers en passant par la sauvegarde de fichiers et l'exécution de macro Access.

    Mon problème est que parfois, pendant l'exécution d'une macro Access, Access affiche le message d'erreur "Dépassement d'un champ numérique", ce qui oblige l'utilisateur à cliquer sur OK, puis sur [Arrêter], puis sur OK, à compacter manuellement la base Access etc.

    L'objectif de cette appli étant que les utilisateurs n'interviennent pas dans le processus d'enchainement des différentes procédures, y a-t-il un moyen d'intercepter les messages d'erreur ci-dessus et de compacter automatiquement la base pour que la macro continue de se dérouler jusqu'au bout ?

    Je connais le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBEngine.CompactDatabase sNomBase, sNomBaseTmp
    mais je ne sais pas comment le gérer vis à vis du message d'erreur ...

    Je vous remercie par avance pour votre aide.

    Bonne fin de journée.

    Nietzsche64

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 768
    Points : 14 809
    Points
    14 809
    Par défaut
    Bonsoir,
    ce que tu demandes n'est pas possible sans une refonte complète de ton application. Pour compacter une base, il faut qu'elle soit fermée et reprendre l'exécution d'une macro dans ces conditions relève de l'exploit, à moins d'avoir une table qui permette de gérer les étapes d'une macro (avec inscription de l'action en cours dans cette table) pour pouvoir reprendre le processus à partir du traitement en erreur.
    Et même là, il faudra mieux passer par du code VBA pour bien gérer le passage de chaque étape.

    Il faut aussi rechercher les raisons pour lesquelles ta base grossit aussi vite pendant un traitement.
    Pour t'aider, il faudrait nous faire connaitre quelles actions sont exécutées et de quelle manière, car certaines méthodes sont plus performantes que d'autres.
    Quelques exemples : il vaut mieux vider une table en la copiant à partir d'une table modèle que d'exécuter une requète de suppression, utiliser des bases attachées pour des tables temporaires que l'on peut compacter à la fermeture ou utiliser, comme pour les tables, une base modèle...

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

    Citation Envoyé par tee_grandbois Voir le message
    Il faut aussi rechercher les raisons pour lesquelles ta base grossit aussi vite pendant un traitement.
    Tout à fait, et c'est la priorité.

    Philippe

  4. #4
    Membre régulier Avatar de zoopsys
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 68
    Points : 80
    Points
    80
    Par défaut
    *Bonjour,*
    Je vois pas trop le rapport entre le message d'erreur "Dépassement d'un champ numérique" et le compactage de la base Access.
    Quand une base Access atteint les 2 go le message d'erreur et "Dépassement d'un champ numérique" ?

    Si ta base Access atteint régulièrement la taille limite et que tu es obligé de compacter, il faudrait déplacer tes tables dans une autre base et les lier à la base courante (si ce n'est pas déjà fait). Tu pourras ainsi compacter ta base data à tout moment. Tu peux par exemple, lors de l’exécution de ton code contrôler la taille de ta base, et si elle dépasse les 1.5go, lancer le compactage.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Août 2010
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Je n'ai malheureusement pas tous les tenants et les aboutissants de ce projet.

    Le besoin du client est de générer une suite de fonctions et de paramétrer les fichiers, les bases, les macros etc. à utiliser dans ces fonctions.

    Il a donc décidé de scinder en 2 parties la macro concernée par le message d'erreur : il pourra ainsi enchainer la 1ère partie de la macro, le compactage de la base Access et enfin la 2nde partie grâce aux fonctions "LancerMacroAccess" et "CompacterBaseAccess" que je lui ai mises à disposition dans l'appli.

    Pour info, le client m'a dit que c'était normal que les bases grossissent ainsi.

    Merci encore pour votre aide.

    Bonne journée.

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

Discussions similaires

  1. [AC-2003] Message d'erreur suite à l'exécution d'un formulaire
    Par rafalemirage dans le forum IHM
    Réponses: 12
    Dernier message: 10/02/2011, 17h00
  2. Message d'erreur Windows et exécution d'OpenMP
    Par nanath02 dans le forum Threads & Processus
    Réponses: 12
    Dernier message: 28/03/2010, 15h22
  3. Message d'erreur bizarre à l'exécution
    Par khtarius dans le forum Fortran
    Réponses: 5
    Dernier message: 23/04/2007, 09h51
  4. bloquer un message d'erreur lié a une macro
    Par db48752b dans le forum Access
    Réponses: 11
    Dernier message: 21/09/2006, 12h28
  5. [ASP] message d'erreur (impossible d'excuter un projet ...)
    Par haganidjamel dans le forum Delphi .NET
    Réponses: 6
    Dernier message: 06/09/2005, 17h28

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