Excel vba adodb connection

Alex -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut,

j'utilise une macro VBA dans excel 2007 qui va chercher des données ds un autre fichier excel grace a une connection adodb.
Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    Set cn = New ADODB.Connection
    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source=" & source & ";Extended Properties=Excel 12.0 Xml;"
        .Open
    End With
    Set rs = New ADODB.Recordset
    rs.Open ("select max(DATE) from [table]"), cn


Cette macro va chercher la max date de la colonne 1 (colonne qui s'appelle DATE).

Ca marche tres bien sur tous mes fichiers, sauf 1 qui a plus de lignes (environ 45k lignes) que les autres (10k lignes en moyenne)
Sur ce fichier plus gros, vba ne repond plus et je dois l'arreter brutalement pour recuperer la main.

Qqun saurait pourquoi ca plante comme ca, et comment je peux contourner le pb?

merci d'avance

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    difficile à dire car pas de problèmes pour 45000 lignes mais peut-^tre que:

    Le code se termine t'il bien
    par set cn=nothing et set rs=nothing ?

    dans le classeur fautif, les données sont elles cohérentes dans la colonne "date" (format identique)? si différence (texte et nombre), Max ne peut pas être calculer (incompatiblité de type) ?
    0
    1. Alex
       
      oui le code se finit bien par cn = nothing et rs= nothing.
      le code plante lors de l'execution de rs.open... pas de message d'erreur juste vba qui freeze et ne repond plus
      Ja' vérifié, il n'y a que des dates dans le fichier qui plante.
      Merci pour la reponse.
      0
  2. Alex
     
    UPDATE:

    en fait, ca plante sur 3 fichiers qui ont tous 34638 lignes ou +
    et ca marche sur tous les fichiers qui ont 32558 lignes ou -.

    je pense que ca doit planter a partir de 2^15 lignes... tout semble l'indiquer pour le moment
    0