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 :

[Automation] Access vers Excel. Problème avec les longues chaînes


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 40
    Points : 41
    Points
    41
    Par défaut [Automation] Access vers Excel. Problème avec les longues chaînes
    Bonjour,

    J'ai créé un bout de code en utilisant la technique d'automation Access vers Excel. Tout va très bien. Je me heurte à un problème de taille (sans jeu de mot...)

    Lorsque je boucle sur ma table Access et que j'insère une valeur chaine de caractère (très longue en taille > 1000 car.) dans un tableau Excel, j'ai l'erreur 7: Mémoire insuffisante.
    En fait, j ai essayé de copier à la "mano", le texte de l'enregistrement dans excel: Excel me dit "Formule trop longue"
    Pourtant, quand je saisais du texte dasn Excel, je ne suis pas limité. J'ai réussi à saisir autant de caractères que ma chaine de la table Access.

    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
     
     
    Dim xlApp As Excel.Application
    Dim xlw As Excel.Workbook
     
    'On créée l'objet Excel
    Set xlApp = CreateObject("Excel.Application")
    Set xlw = xlApp.Workbooks.Open(RepertoireSauvegarde)
     
    'Boucle
    For i = 1 To nbrecords
            'C'est ici que le problème se pos epour les longues chaines de car.
            xlApp.Cells(iFirstcell + i, 1) = rs("ChampAExporter")
    rs.MoveNext
    Next i
     
    'On ferme et on libère
    rs.close
    set rs=nothing
    Pouvez vous m aider, je bloque.

    Merci

    Jimmy

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    je serais toi, je jetterai un coup d'oeil du côté de la méthode CopyFromRecordset de l'objet Range, dans Excel

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 40
    Points : 41
    Points
    41
    Par défaut CopyFromRecordset
    Je ne vois pas comment l'utiliser dans mon cas COPYFROM RECORDSET...
    Pouvez vous éclairer ma lanterne ???

    Voici mon bout de code. Le probleme se situe quand je copie les données du champ commentaires vers Excel. Quand la longueur est supérieure à 1024 -> erreur 7, mémoire insuffisante.

    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
     
    dim strSQL as string
    dim db as database
    dim i,j as integer
    set db =currentdb()
     
    strSQL= "Select nom, prenom, madate, commentaires FROM TABLE1"
     
    set rs=db.openrecordset(strSQL)
     
    for i = 1 to rs.recordcount
             'je copie dans une feuille Excel en passant par automation
              XLapp.cells(i,1)=rs("nom")
              XLapp.cells(i,2)=rs("prenom")
              XLapp.cells(i,5)=rs("madate")
              XLapp.cells(i,10)=rs("commentaires")
             ' Champ Commentaires, Longueur des chaines: Minimum 2000 car.
             'Excel en veut maxi 1024 par cette méthode
    rs.movenext
    next i
    rs.close
    set rs=nothing

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 40
    Points : 41
    Points
    41
    Par défaut Copyfromrecordset pose le même problème
    Copyfromrecordset génère aussi une erreur lorsqu'un champ > 1024 caractères.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Empêcher Excel d'interpréter un texte libre copié dans une cellule
    Bonjour,

    Apparemment, Excel tente d'interpréter la valeur que tu veux copier dans la cellule. En effet, si tu te relis tu constateras...
    Citation Envoyé par ADONET
    [...] En fait, j ai essayé de copier à la "mano", le texte de l'enregistrement dans excel: Excel me dit "Formule trop longue"
    Pourtant, quand je saisais du texte dasn Excel...
    Tu veux saisir du texte, mais Excel le voit comme une formule !
    Et si c'est une formule, alors Excel va l'analyser !

    Remède:
    Pour se protéger de toute interprétation d'un "texte libre", ajoute au début le caractère "apostrophe".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XLapp.cells(i,10)= "'" & rs("commentaires")
    Dans Excel 2000, une cellule peut contenir au maximum 32767 caractères (c'est déjà pas mal pour celui qui va lire ça ).

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/12/2014, 10h25
  2. VSTO EXCEL : problèmes avec les shapes.
    Par Frogman21 dans le forum VSTO
    Réponses: 0
    Dernier message: 17/08/2011, 12h58
  3. Migration 2000 vers 2008 : Problème avec les Users
    Par BenoitM dans le forum Réplications
    Réponses: 1
    Dernier message: 07/12/2009, 14h13
  4. Réponses: 1
    Dernier message: 03/06/2009, 16h14
  5. [A-03] Données Access vers Excel, problème d'arrondis
    Par Secco dans le forum VBA Access
    Réponses: 2
    Dernier message: 31/10/2008, 08h17

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