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

Macros et VBA Excel Discussion :

Limite de caractère avec les Recordset ADO [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut Limite de caractère avec les Recordset ADO
    Bonjour,

    J'utilise les Recordset ADO pour transférer des données texte d'un fichier excel à un autre.

    A la suite du transfert, le résultat obtenu dans le tableau de destination a été limité à 255 caractères.

    Auriez-vous une solution pour éviter cela ?

    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
    Sub Test()
    Dim Fichier As String
    Dim cnx As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnx = New ADODB.Connection
    Set rst = New ADODB.Recordset
     
    Fichier = "C:\temp\Test.xlsm"
    cnx.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1;Readonly=False;"""
    cnx.Open
     
    Set rst = cnx.Execute("SELECT * FROM [Feuil1$U1:U500]")
    ThisWorkbook.Sheets(1).Range("U1").CopyFromRecordset rst
    rst.Close
     
    cnx.Close
    End Sub
    Merci et bonne journée

  2. #2
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonsoir,
    Comme tu t'en doute Excel n'est pas une SGBD et ne dispose pas de typage de champs.

    C'est donc Ado qui s'y colle par apprentissage. Pour cela il faut au-moins une valeur de 256 caractères dans les 8 premières lignes mais très souvent c'est 3!

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    Merci pour cette info, je comprends mieux le problème maintenant

    Existe-il malgré tout une solution pour forcer le type de données ? (Dans la requête ou autre ?)

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    Je pense que c'est mort : https://silkyroad.developpez.com/VBA...ursFermes/#LII



    Je vais devoir "polluer" ma première donnée pour forcer ADO à détecter le bon format...

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Ajoute MAXSCANROWS=1 à la chaîne de connexion pour ne polluer que d'une seule ligne.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/07/2008, 10h42
  2. probleme avec les recordset
    Par joe370 dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2008, 21h03
  3. Problème avec les composants ADO
    Par elikplim dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/10/2007, 11h39
  4. Réponses: 13
    Dernier message: 28/11/2006, 08h40
  5. Problème Update Base de données avec les composants ADO
    Par lingli dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/04/2006, 00h41

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