[EXCEL / VBA] Connexion ADO et recordset "limité"

Connexion ADO et recordset "limité" [EXCEL / VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 02-10-2018 à 13:32:10    

Bonjour,
Je suis en train de faire une petite macro qui va récupérer des données dans 3 classeurs Excel distincts, sans les ouvrir, en vue d'un traitement ultérieur.
 
Je me connecte en ADO, et si pour les deux premiers fichiers, la récupération de données se passe bien, ça coince sur le 3eme :
Je ne veux récupérer qu'une colonne, qui contient 1479 entrées, mais même si le recordset.count vaut 1479, il ne me récupère que 236 lignes.
les données contenues sur les lignes 1 à 236 sont du numérique sur 13 caractères avec un zéro en #1, à partir de la ligne 237, j'ai un mélange d'alpha et de numérique : 2 lettres puis 11 nombres.
Ça semble lui poser problème mais pourquoi ? Merci de votre aide
 
Voici mon code :
 

Code :
  1. Set connexion = New ADODB.Connection   
  2. Set RS = New ADODB.Recordset
  3.        
  4. '--- Connexion ---
  5. With connexion
  6.         .Provider = "Microsoft.Jet.OLEDB.4.0"
  7.         .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
  8.            & Fichier_src & ";Extended Properties=""Excel 8.0;HDR=No;"""
  9.         .Open
  10. End With
  11.        
  12. Sql = "SELECT * from `" & Onglet_src & "$B2:B2000`"
  13. Set RS = connexion.Execute(Sql)
  14. RS.MoveFirst
  15.                          
  16. ThisWorkbook.Worksheets("Histo contrôles" ).Range("A1" ).CopyFromRecordset RS
  17.                
  18. connexion.Close
  19. Set RS = Nothing
  20. Set commande = Nothing
  21. Set connexion = Nothing


Message édité par karoli le 02-10-2018 à 13:37:05
Reply

Marsh Posté le 02-10-2018 à 13:32:10   

Reply

Marsh Posté le 02-10-2018 à 19:44:13    

Bonjour,
 
D'après : https://support.microsoft.com/fr-fr [...] in-excel-w
OLE DB analyse par défaut les 8 premières lignes du fichier pour définir le type de données de chaque colonne, la seule chose qui semble être modifiable est le nombre de lignes à analyser (entre 1 et 16) ce qui ne permet pas de résoudre ton problème. La seule solution serait alors de "polluer" tes colonnes afin qu'il détecte du texte plutôt que des nombres. Ou alors utiliser une autre solution que OLE DB.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 31-10-2018 à 22:43:30    

MaybeEijOrNot a écrit :

Bonjour,
 
D'après : https://support.microsoft.com/fr-fr [...] in-excel-w
OLE DB analyse par défaut les 8 premières lignes du fichier pour définir le type de données de chaque colonne, la seule chose qui semble être modifiable est le nombre de lignes à analyser (entre 1 et 16) ce qui ne permet pas de résoudre ton problème. La seule solution serait alors de "polluer" tes colonnes afin qu'il détecte du texte plutôt que des nombres. Ou alors utiliser une autre solution que OLE DB.


 
Bonsoir, et merci pour ta recherche et réponse.
J'ai pas eu le temps de m'y replonger sur octobre, mais je vais creuser, et du coup regarder sans oledb
 
Merci encore
Olivier


---------------
FeedBack
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed