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

Requêtes et SQL. Discussion :

question sur la gestion des erreurs lors de l'export d'une requete vers Excel


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de lyxthe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Points : 90
    Points
    90
    Par défaut question sur la gestion des erreurs lors de l'export d'une requete vers Excel
    je voudrais exporter le résultat d'une requête depuis access vers Excel. Je crées donc ma requête et j'execute cette exportation ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub btn_exportexcel_Click()
    Dim lq_req As QueryDef
    Set lq_req = CurrentDb.CreateQueryDef("requete_xls", lst_Objets_2.RowSource)
    DoCmd.OutputTo acOutputQuery, "requete_xls", acFormatXLS, , True
    DoCmd.DeleteObject acQuery, "requete_xls"
    End Sub

    le problème c'est que pendant mes tests, il m'arrive que le fichier dans lequel je souhaite enregistrer mes resultats ne soit pas accessible.

    Aparait alors une fenetre d'erreur me proposant le débugage. Le soucis c'est que le programme s'arrete et ne détruit plus requete_xls
    donc quand je réexcute l'option la requete existe déjà et ça ne marche pas.

    J'ai donc tenté de créer une gestion d'erreure :

    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
    Private Sub btn_exportexcel_Click()
     
    Dim lq_req As QueryDef
     
    Set lq_req = CurrentDb.CreateQueryDef("requete_marwane_xls", lst_Objets_2.RowSource)
    On Error GoTo excel_error
     
    DoCmd.OutputTo acOutputQuery, "requete_marwane_xls", acFormatXLS, , True
    On Error GoTo excel_error
     
    DoCmd.DeleteObject acQuery, "requete_marwane_xls"
    Exit Sub
     
    excel_error:
        MsgBox "error"
        DoCmd.DeleteObject acQuery, "requete_marwane_xls"
     
    End Sub
    mais cela ne change strictement rien. Pourquoi la gestion d'erreure ne s'applique pas?
    tout le monde est différent sauf moi

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    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,
    pour la gestion d'erreur : tu ne récupères par le numéro de l'erreur : donc ça ne fonctionne pas !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On Error GoTo excel_error
    Pas besoin de le mettre plusieurs fois.. tu le mets une fois en début de procédure : ca suffit.

    C'est l'existance de la requête ou du fichier excel qui pose problème ??
    Dans les 2 cas, procèdes ainsi :

    1. Tester si ton fichier/requete existe
    2. S'il existe : tu le supprimes/modifie le SQL de la requête
    3. Ensuite tu fais ton exportation


    Pour toutes ces choses : voir la

  3. #3
    Membre régulier Avatar de lyxthe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Points : 90
    Points
    90
    Par défaut merci
    ok merci je v etudier tout ça
    tout le monde est différent sauf moi

  4. #4
    Membre régulier Avatar de lyxthe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Points : 90
    Points
    90
    Par défaut ok pour le 1 mais pour le 2?
    en fait j'ai réussi à tester si la requete existait ou non, de ce côté là c'est bon, mais pour ce qui est du fichier, il est laissé libre choix à l'utilisateur de l'entrer, et il peut choisir un fichier déjà utilisé ou dont il n'a pas les droits auquel cas un message d'erreur apparait.
    Le plus simple serait donc pour moi d'effectuer un contôle des erreures et de gérer l'événement en demandant à l'utilisateur de réessayer.
    donc il me fait bel et bien gérer les erreures. Enfin je crois, donc comment je fais pour capter cette erreure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OutputTo acOutputQuery, "requete_marwane_xls", acFormatXLS, , True
    On Error GoTo excel_error
    on error là ne marche pas
    tout le monde est différent sauf moi

  5. #5
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    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
    Le on error doit être au début
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub btn_exportexcel_Click()
    On Error Goto etiquette
    Dans ton cas pour récupérer l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    excel_error:
        MsgBox "error"
        DoCmd.DeleteObject acQuery, "requete_marwane_xls"
    Deviens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    excel_error:
        MsgBox err.number
    Recherche dans la FAQ/les sources "tester existence fichier"
    recherche également comment supprimer un fichier.
    Tu auras alors toutes les réponses à tes questions.

    Pour une gestion efficace des erreurs regarde la faq.

    PS : ne vois rien d'expéditif la dedans mais
    1) je ne réponds pas aux questions par MP (et je ne voulais pas partir sans te donner d'autres infos. Ah oui je ne m'y connais pas trop.. il m'arrive encore de poser des questions
    2) je suis en retard.. (comme le lapin blanc d'Alice....)
    @++

Discussions similaires

  1. question d'un débutant sur la gestion des erreurs en VBA
    Par David1259 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/01/2009, 12h43
  2. erreur lors d'un export simple d'Access vers Excel
    Par Armagnak dans le forum Access
    Réponses: 4
    Dernier message: 18/08/2006, 09h33
  3. question sur la gestion des css
    Par boustor dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/07/2006, 16h57
  4. Quelques questions sur la gestion des droits
    Par sylsau dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/03/2006, 14h11
  5. Question sur la gestion des fenetres MDI
    Par RémiONERA dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/07/2005, 07h58

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