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

Access Discussion :

Débutant: Problème pour exporter vers excel


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 61
    Points
    61
    Par défaut Débutant: Problème pour exporter vers excel
    Bonjour,

    Mon formulaire recherche (réalisé à l'aide du tuto de caféine) possède une fonction qui permet d'exporter ma liste de résultat vers un tableau excel.
    Une fois que j'ai fais une demande d'exportation (clic sur un bouton de commande) il m'ouvre mon tableau excel avec les infos mais si je ne ferme pas se tableau et que je réalise un second clic alors là c'est la m****. Une erreur s'affiche et tout est planté. Je ne peut même plus faire fonctionner l'appli par la suite.

    Voici mon code:
    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
    Private Sub Commande42_Click()
    Dim fso As FileSystemObject
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    If fso.FolderExists("c:\Recherche formulaire") Then
    Else
     fso.CreateFolder ("c:\Recherche formulaire")
    End If
     
    Dim SQL As String
    SQL = Me!lstResults.RowSource
    CurrentDb.CreateQueryDef "results", SQL
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "results", "C:\Recherche formulaire\results"
    DoCmd.DeleteObject acQuery, "results"
     
    Dim Xl As Excel.Application
    Dim Classeur As Excel.Workbook
    Set Xl = New Excel.Application
    Xl.Visible = True
    Set Classeur = Xl.Workbooks.Open("C:\Recherche formulaire\results.xls")
    End Sub
    Qui aurait une idée de comment éviter se bug?

    Merci,

    Jocelyn

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Voici une idée de code qui colle le plus possible à ton code initial. Attention, il n'est pas testé et reste donc à débuguer. Il remplace simplement des explications fastidieuses. C'est juste pour les idées...
    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
    Private Sub Commande42_Click()
    Dim fso As FileSystemObject, db As DAO.Database, SQL As String, wbk As Excel.Workbook
    Const strRep As String = "C:\Recherche formulaire", strFichier As String = strRep & "\results.xls"
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'création du répertoire s'il n'existe pas
    If Not fso.FolderExists(strRep) Then fso.CreateFolder (strRep)
     
    'supprimer classeur xl s'il existe( il peut être ouvert)
    On Error Resume Next
    Set wbk = GetObject(strFichier)
    If Err.Number = 0 Then
        wbk.Close False ' il existe et maintenant est ouvert
        DoEvents
        Kill strFichier
        DoEvents
    Else
        Err.Clear ' il n'existe pas
    End If
    On Error GoTo 0
     
    SQL = Me!lstResults.RowSource
    Set db = CurrentDb
    db.CreateQueryDef "results", SQL
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "results", strFichier
    DoCmd.DeleteObject acQuery, "results"
     
    Set wbk = GetObject(strFichier)
    wbk.Application.Visible = True
     
    Set wbk = Nothing
    Set db = Nothing
    End Sub
    En espérant que cela t'aide et cordialement,

    pgz

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    J'ai fais quelque modifs:

    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
    Private Sub Commande42_Click()
    Dim fso As FileSystemObject, db As DAO.Database, SQL As String, wbk As Excel.Workbook, Xl As Excel.Application
    Const strRep As String = "C:\Recherche formulaire", strFichier As String = strRep & "\results.xls"
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'création du répertoire s'il n'existe pas
    If Not fso.FolderExists(strRep) Then fso.CreateFolder (strRep)
     
    'supprimer classeur xl s'il existe( il peut être ouvert)
    On Error Resume Next
    Set wbk = Xl.Workbooks.Open(strFichier)
    If Err.Number = 0 Then
        wbk.Close False ' il existe et maintenant est ouvert
        DoEvents
        Kill (strFichier)
        DoEvents
    Else
        Err.Clear ' il n'existe pas
    End If
    On Error GoTo 0
     
    SQL = Me!lstResults.RowSource
    Set db = CurrentDb
    db.CreateQueryDef "results", SQL
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "results", strFichier
    DoCmd.DeleteObject acQuery, "results"
     
    Set Xl = New Excel.Application
    Xl.Visible = True
    Set wbk = Xl.Workbooks.Open(strFichier)
     
    Set wbk = Nothing
    Set db = Nothing
    End Sub
    Mon erreur quand je refais exporter alors que ma fenêtre excel n'a pas été fermé précédement est la suivante:
    "La table result existe déjà"

    Et le curseur s'arrête sur la ligne de code suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "results", strFichier
    Je ne comprends pas j'ai l'impression qu'il ne prend pas en compte les ligne de code concernant la fermeture de excel si la table est ouverte.

    Merci,

    Jocelyn

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    As-tu essayé le code sans le modifier?

    pgz

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    Bien entendu pqz. Cela a même été ma première manip.

    En faite quand j'utilise ton code cela créé un bien un fichier excel mais il ne s'ouvre pas. De plus quand je vais voir dans le dossier "recherche formulaire" présent sur mon disque c et que j'ouvre le fichier excel alors j'ai un pb car cela s'ouvre tout blanc. En faite excel s'ouvre et se referme aussitot.
    Et quand je vais chercher le fichier pour l'ouvrir alors la fenêtre est transparente (je sais cela doit te sembler imcompréensible).

    Je ne comprends donc pas d'ou vient l'erreur.

    Merci beaucoup pour ton aide pqz,

    Jocelyn

  6. #6
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour Jocelyn,

    J'ai en effet du mal à voir.
    Peut-être avec la base?

    A+

    pgz

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    Bonsoir PGZ!!!

    Je me permet de te demander de regarder mon dernier post à cette adresse:

    http://www.developpez.net/forums/sho...d.php?t=197073

    Je te remercie beaucoup.

    Jocelyn

  8. #8
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir,

    Avec ta base, j'ai pu regarder les pb. Comme toi, avec le code que je te proposais, je n'ai pas le classeur visible. PAr contre il se crée correctement et je peux l'ouvrir sans pb.

    Après modification, chez moi cela fonctionne très bien. Voici le code après mise au point:
    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
    Private Sub Commande42_Click()
    Dim fso As FileSystemObject, db As DAO.Database, SQL As String, wbk As excel.Workbook
    Const strRep As String = "C:\Recherche formulaire", strFichier As String = strRep & "\results.xls"
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'création du répertoire s'il n'existe pas
    If Not fso.FolderExists(strRep) Then fso.CreateFolder (strRep)
     
    'supprimer classeur xl s'il existe( il peut être ouvert)
    On Error Resume Next
    Set wbk = GetObject(strFichier)
    If Err.Number = 0 Then ' il existe et maintenant est ouvert
        wbk.Close False
        Kill strFichier
    Else ' il n'existe pas
        Err.Clear
    End If
    On Error GoTo 0
     
    SQL = Me!lstResults.RowSource
    Set db = CurrentDb
    db.CreateQueryDef "results", SQL
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "results", strFichier
    DoCmd.DeleteObject acQuery, "results"
     
    Set wbk = GetObject(strFichier)
    wbk.Application.Visible = True
    wbk.Parent.Windows(1).Visible = True
     
    Set wbk = Nothing
    Set db = Nothing
    End Sub
    Cordialement,

    pgz

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    Bonjour PGZ !!!

    C'est un peu mieux mais il se passe des choses vraiment très bizarre quand je test ton code sur mon pc. Je ne sais pas pourquoi mais voici se qui se passe:

    1- Je clic sur le bouton excel (pour exporter)
    2- Une page internet sur le logiciel systran s'ouvre (ça c'est vraiment bizarre )
    3- Une fenêtre windows s'ouvre (la fenêtre normal qui dit que windows a récupéré une erreur sérieuse avec la case à cocher en bas pour faire un backup)
    4- J'ai une fenêtre excel qui s'ouvre avec les infos voulus et une seconde vide.

    Je n'ai pas testé sur un autre pc pour le moment mais je trouve ces problèmes étranges. Je vais essayer de faire une compilation de ton code et de mon ancien code.

    Amicalement,

    Jocelyn

  10. #10
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Je ne sais pas ce qui se passe chez toi, mais je te garantie que le code fonctionne très bien chez moi, dans ta base.
    Je ne sais pas expliquer ce que tu décris!

    A+

    pgz

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 61
    Points
    61
    Par défaut
    Salut PGZ!!!

    En effet je viens de tester sur un autre pc et aucun problème.

    C'est vraiment bizarre

    Amicalement,

    Jocelyn

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

Discussions similaires

  1. Code VBA pour exporter vers Excel/Access
    Par piflechien73 dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 26/03/2012, 07h37
  2. [V5] [5.1.4] Option xls pour exportation vers Excel
    Par Statiss dans le forum Deski
    Réponses: 5
    Dernier message: 08/06/2009, 14h00
  3. Changer le content-type pour export vers Excel
    Par toto1011 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/02/2009, 13h54
  4. [Tableaux] header pour export vers Excel sous IE7
    Par amy0o0 dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2007, 15h42
  5. Probleme pour Export vers Excel "intersect"
    Par kleenex dans le forum Access
    Réponses: 4
    Dernier message: 05/01/2006, 14h54

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