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 :

Export vers Excel : Cellules limitées à 50 caractères


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 49
    Points
    49
    Par défaut Export vers Excel : Cellules limitées à 50 caractères
    Bonjour à tous,

    Je reprend une BDD access et il y a une fonction export des données vers un fichier Excel (c'est un bouton Export).

    Mon problème est que pour un champ particulier (le champ Composants Binaires), la cellule semble limitée à 50 caractères et les données sont tronquées. Alors que pour le champ libellé, je n'ai pas ce problème de taille.

    La requête Alimentation_Table_EXPORT_STAT_3 alimente une table avec toutes les données à exporter. J'ai vérifié dans cette base après exécution de cette requête, toutes les informations sont bien dans les champs de la table. Il s'agit vraiment d'un problème lors de l'exportation vers Excel.

    Je ne vois pas comment faire pour régler ce problème.

    Voici le code evenement lors du click sur le bouton Export :

    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
     
    Private Sub btnExportStat_Click()
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim rs, rs2 As DAO.Recordset
        Dim strRequete, strSousRequete As String
        Dim strNumPatch, strNumARS, strLibPatch, strLibARS, strPatchLie, strEtape, strStatutPatch, strOrdre As String
        Dim strNumGDT, strDateMEP As String
        Dim strNomFichier As String
        Dim strCheminSave As String
     
        On Error GoTo err_handler
     
        logwrite "(btnExportStat_Click) Lancement export Fichier", "EXPORT"
     
        ' On vide la table
        DoCmd.RunSQL "DELETE * FROM EXPORT_STAT_3"
     
        ' On alimente la table ONGLET_STAT_3
        DoCmd.OpenQuery "Alimentation_Table_EXPORT_STAT_3"
     
        ' export Excel
        Set xlApp = New Excel.Application
        Set xlBook = xlApp.Workbooks.Add
     
        xlBook.Sheets(3).Select
        xlBook.Sheets(3).Name = "STAT03"
     
        strRequete = "SELECT * FROM EXPORT_STAT_3 ORDER BY Ordre"
        Set rs = CurrentDb.OpenRecordset(strRequete)
     
        xlBook.Sheets("STAT03").Range("A1") = "Version"
        xlBook.Sheets("STAT03").Range("B1") = "Ordre"
        xlBook.Sheets("STAT03").Range("C1") = "Numéro Patch"
        xlBook.Sheets("STAT03").Range("BI1") = "Composants JAR"
        xlBook.Sheets("STAT03").Range("BJ1") = "Composants BINAIRE"
        xlBook.Sheets("STAT03").Range("BK1") = "Composants SQL"
        xlBook.Sheets("STAT03").Range("BL1") = "Composants PACKAGE"
     
        xlBook.Sheets("STAT03").Range("A2").CopyFromRecordset rs
     
        strNomFichier = Format(Date, "yyyymmdd") & "_ExportStat.xls"
        strCheminSave = EnregistrerUnFichier(Me.hwnd, "Enregistrer sous", strNomFichier, "C:\")
        If strCheminSave <> "" Then
            xlBook.SaveAs strCheminSave
    '        xlApp.Visible = True
        Else
            xlApp.Quit
            Set xlApp = Nothing
            Exit Sub
        End If
     
        logwrite "(btnExportStat_Click) Fin export Fichier", "EXPORT"
        MsgBox "Fichier exporté.", vbInformation, "Export"
     
        rs.Close
        Set rs = Nothing
        Set xlBook = Nothing
        xlApp.Quit
        Set xlApp = Nothing
     
        Exit Sub
    err_handler:
        MsgBox "(btnExportStat_Click) Erreur : " & Err.Number & " " & Err.Description, vbCritical, "Erreur"
        logwrite "(btnExportStat_Click) Erreur Application", "EXPORT"
    '    xlApp.Quit
    '    Set xlApp = Nothing
        Exit Sub
     
    End Sub
    Merci d'avance pour votre aide.
    Deb

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    Je n'ai pas étudié ton problème en soi, mais je viens de repérer en passant dans ton code une erreur liée à un piège du VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim rs, rs2 As DAO.Recordset
        Dim strRequete, strSousRequete As String
        Dim strNumPatch, strNumARS, strLibPatch, strLibARS, strPatchLie, strEtape, strStatutPatch, strOrdre As String
        Dim strNumGDT, strDateMEP As String
    Contrairement à ce que l'on pourrait penser, rs n'est pas ici de type Recordset, de même strRequete ...
    Cette syntaxe sous VBA revient à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim rs
        Dim rs2 As DAO.Recordset
        Dim strRequete
        Dim strSousRequete As String
        Dim strNumPatch
        Dim strNumARS
    '...
    Les variables sans type précisés sont alors de type Variant.

    Pour éviter le piège, le mieux est de prendre l'habitude de ne déclarer qu'une variable par ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim rs As DAO.Recordset
        Dim rs2 As DAO.Recordset
        Dim strRequete As String
        Dim strSousRequete As String
        Dim strNumPatch As String
        Dim strNumARS As String
    '...
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Tout d'abord merci pour cette remarque, j'ai modifié mon code selon tes conseils.

    Néanmoins, cela n'a pas corrigé le problème existant

    Merci d'avance pour aide.
    Deb

  4. #4
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Mémo
    Hello,
    je ne suis pas certaine mais je pense que dans la définition de ton champs, son format doit être "Texte"
    change le pour "Mémo" qui limite à plus de 65000 caractères
    J'espère t'avoir aidé !

  5. #5
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour.

    Un champ texte peut avoir jusqu'à 250 caractères. A préciser dans la propriété de champ, dans la table.

    Un champ mémo comporte pus de caractères.

    Pierre

  6. #6
    Membre actif Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Comme l'ont remarqué dvpoutilbnp et pier.antoine, ton problème ressemble fort à un problème de paramétrage du champ de la table "EXPORT_STAT_3".

    Par contre si le champ de la table "EXPORT_STAT_3" comporte bien tous les caractères. Alors regarde si le recordset rs lie correctement ce champ pour voir si le problème vient de ton recordset ou de la méthode ".CopyFromRecordset ".

    Je n'ai jamais utilisé cette méthode mais si c'est elle qui te bloque tu peux toujours faire l'export "à la main" en utilisant des "do while rs.EOF...loop".
    Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]

Discussions similaires

  1. Exporter vers Excel 2007 (limite de 256 columns)
    Par mathieu_BO dans le forum Webi
    Réponses: 0
    Dernier message: 20/04/2011, 11h07
  2. Réponses: 5
    Dernier message: 23/02/2009, 22h11
  3. Réponses: 2
    Dernier message: 04/08/2008, 11h13
  4. Pb export vers Excel : limitation du nbr de lignes ?
    Par oceanediana dans le forum Access
    Réponses: 4
    Dernier message: 17/07/2006, 15h41
  5. Export vers Excel et saut de ligne dans cellule
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h53

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