Trop de CHAMPS avec ADO

BOUCHEZ JD

XLDnaute Junior
Bonjour à tous.

J'utilise la methode ADO décrite plusieurs fois dans ce forum pour récuperer
290 lignes et 13 colonnes dans un fichier fermé.
Le CODE :
Sub Copie_CONTENU_Formation()

Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset

'= SOURCE === PATH et NOM du classeur fermé servant de source de données
Fichier = ActiveWorkbook.Path & "\_Contenu_des_formations_evol_competences.xls"
' === Nom de la feuille dans ce classeur fermé
NomFeuille = "contenu_form"

'--- Connection ---
Set Cn = New ADODB.Connection
' Cn.Open szSQL, szConnect, adOpenForwardOnly, adLockReadOnly, adCmdText

With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & ";" & "Extended Properties=""Excel 8.0;HDR=NO;"""
.Open
End With
'-----------------
'La requête SQL.
texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"

Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)


etc ...

Le programme se plante à la derniére ligne ci dessus avec le message :
"Trop de champs définis"
Je pense qu'il fait reference à l' * du SELECT FROM ; mais je n'ai
que 13 colonnes/CHAMPS ce qui ne me semble pas justifier le
message.

Si quelqu'un à une idée, grand merci d'avance.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Trop de CHAMPS avec ADO

Bonsoir,

Il n'y a pas de pb.

Code:
Sub Import()
 'Microsoft ActiveX DataObject doit être coché
  Dim rs As ADODB.Recordset
  repertoire = ThisWorkbook.Path
  Set cnn = New ADODB.Connection
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\ADOsource.xls"
  Set rs = cnn.Execute("SELECT * FROM [Feuil2$]")
  [A1].CopyFromRecordset rs
End Sub

Code:
Sub RecupTableur()
  ' Microsoft ActiveX DataObject doit être coché
  Set cnn = New ADODB.Connection
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & ThisWorkbook.Path & "\" & "ADOsource.xls"
  Set rs = cnn.Execute("[Feuil2$A1:M100]")
  [A1].CopyFromRecordset rs
  rs.Close
  cnn.Close
  Set rs = Nothing
  Set cnn = Nothing
End Sub
[/CODE]

JB
Formation Excel VBA JB
 
Dernière édition:

BOUCHEZ JD

XLDnaute Junior
Re : Trop de CHAMPS avec ADO

Bonjour.

Merci pour la réponse.

Avec Sub Import() même probleme de "Trop de champs".

Avec Sub RecupTableur() c'est OK mais il ne faut pas qu'il y ait trop de caractéres dans la cellule sinon les données ne sont pas copiées à partir de cette cellule et sur toutes les colonnes suivantes.

Donc merci et bonne semaine.

BJD
 

BOUCHEZ JD

XLDnaute Junior
Re : Trop de CHAMPS avec ADO

Bonjour.

Hélas oui, la limite est de 255 caractéres selon le site Microsoft.

Par contre, j'ai trouvé une 'combine' : En mettant par exemple 290 caractéres
sur la 2eme cellule des colonnes (des 'a' que je cache par la couleur blanche; ou peut être
(non testé) en masquant la ligne), la limite de 255 est repoussée et le transfert se fait bien
au delà des 255 caractéres !!!

En tout cas, merci et bonne semaine.
 

Discussions similaires

Statistiques des forums

Discussions
312 843
Messages
2 092 755
Membres
105 523
dernier inscrit
mouki62530