Ce pilote ODCB ne prend pas en charge les propriétés demandés

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

carlos

XLDnaute Impliqué
Bonjour

J'ai ce message d'erreur sur ce qui suit en derniere ligne!

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & Chemin & "; ReadOnly=False;"
Cible = "SELECT DISTINCT DIV. FROM " & laBase & ";"

Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic

Merci
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

bonsoir


Difficile de répondre sans voir la totalité de ton code


1.
Code:
Cible = "SELECT DISTINCT DIV. FROM " & laBase & ";"

Le nom de la feuille (variable "laBase" dans ta procédure) doit être encadrée par des crochets)


2.
A quoi correcond DIV. ?
j'espère que ce n'est pas le nom d'un champ car le point est fortement déconseillé.
Les champs devraient respecter les bonnes pratiques dans la déclaration des Noms:
- Nom le plus court possible.
- Pas d'espace.
- Pas d'accent.
- Pas de caractères spéciaux.

- Evite aussi les espaces et les caractères spéciaux dans le nom des feuilles.



Dans ce cas deux possibilités:
* Renommer le champ sans point
ou
* Remplacer DIV. par [DIV#] dans le code VBA
Ce qui donnerait

Code:
Cible = "SELECT DISTINCT [DIV#] FROM [" & laTable & "];"



bonne soirée
michel
Microsoft Excel MVP
 
Dernière édition:
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Bonjour MichelXld , le forum

Merci pour ta proposition.
Malheureusement j'ai toujours le meme message d'erreur, meme en changeant le nom des champs et en mettant des [].

En faite , ma connection avant se faisait vers un fichier en .dbf :

Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
Chemin & ";"
Cible = "SELECT DISTINCT DIV FROM " & laBase & ";"

Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic

Cela fonctionnait tres bien.

Maintenant je suis obligé de passer par un fichier .xls

es ce que cette suite est bonne car je l'ai choppé sur internet?

"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & Chemin & "; ReadOnly=False;"
Cible = "SELECT DISTINCT DIV FROM " & laBase & ";"

Merci
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Bonjour,


ci joint un exemple complet :

Code:
Dim Rs As ADODB.Recordset
Dim Cn As String, Cible As String, Fichier As String
 
Fichier = "C:\dossier\classeurFerme.xls"
 
Cn = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
    "ReadOnly=1;DBQ=" & Fichier & ";" & _
    "extended properties=""Excel 8.0;"""
 
Cible = "SELECT DISTINCT DIV FROM [Feuil1$];"
 
Set Rs = New ADODB.Recordset
Rs.Open Cible, Cn, adOpenKeyset
 
If Not Rs.EOF Then Range("A2").CopyFromRecordset Rs
 
Rs.Close
Set Rs = Nothing


bonne journée
michel
Microsoft Excel MVP
 
Dernière édition:
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Bonsoir MichelXld et le forum

Malgré plusieurs essais , j'ai toujours ce problème d'OBCD.Problème sur Cn !

Sub test2()
Dim Rs As ADODB.Recordset
Dim Cn As String, Cible As String, Fichier As String

Fichier = Left(ThisWorkbook.Path, 3) & "EPS1"

Cn = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
"ReadOnly=1;DBQ=" & Fichier & ";" & _
"extended properties=""Excel 8.0;"""

Cible = "SELECT DISTINCT DIV FROM [BaseEleve$];"
Set Rs = New ADODB.Recordset

ICI................................................................
Rs.Open Cible, Cn, adOpenKeyset
........................................................................
If Not Rs.EOF Then Range("A2").CopyFromRecordset Rs

Rs.Close
Set Rs = Nothing
End Sub

Bonne soirée Carlos
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

rebonsoir


je ne comprend pas cette ligne dans ta procédure:
Code:
Fichier = Left(ThisWorkbook.Path, 3) & "EPS1"

La variable "Fichier" doit contenir le chemin complet du classeurExcel. Relit mon exemple précédent:
Code:
Fichier = "C:\dossier\classeurFerme.xls"



bonne soirée
michel
Microsoft Excel MVP
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Re michelXld et le forum

Tu as tout à fait raison MichelXld.

Fichier = Left(ThisWorkbook.Path, 3) & "EPS1\BaseEleve.xls"

Mon chemin n'était pas complet.

ça marche du tonnerre .

Merci beaucoup d'avoir pris le temps de corriger mes erreurs.

Félicitation et très bonne soirée.

Carlos
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Bonjour MichelXld , Le Forum ,Hasco

La requete WHERE me pose i un probleme d'ODCB de nouveau.

C'est certainement encore un probleme de syntaxe

Sub test2()
Dim Rs As ADODB.Recordset
Dim Cn As String, Cible As String, Fichier As String
Dim valrecherche As String
Application.ScreenUpdating = False

valrecherche = "302"

Fichier = Left(ThisWorkbook.Path, 3) & "EPS1\BaseEleve.xls"

Cn = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
"ReadOnly=1;DBQ=" & Fichier & ";" & _
"extended properties=""Excel 8.0;"""

Cible = "SELECT DISTINCT NOM, PRENOM ,DIV FROM [BaseEleve$] WHERE DIV = '" & valrecherche & "';"

Set Rs = New ADODB.Recordset
Rs.Open Cible, Cn, adOpenKeyset

If Not Rs.EOF Then Range("A2").CopyFromRecordset Rs

Rs.Close
Set Rs = Nothing
End Sub


Merci

Carlos
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

re Hasco

Merci pour le fil


J'ai maintenant une erreur :Type de données incompatible dans l'expression du critere
voici ma modif , je ne suis pas sur d'avoir mis au bon endroit.
Sub test2()
Dim Rs As ADODB.Recordset
Dim Cn As String, Cible As String, Fichier As String
Dim valrecherche As String
Application.ScreenUpdating = False

valrecherche = "302"

Fichier = Left(ThisWorkbook.Path, 3) & "EPS1\BaseEleve.xls"

Cn = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
"ReadOnly=1;DBQ=" & Fichier & ";" & _
"extended properties=""Excel 8.0;"""

Cible = "SELECT DISTINCT NOM, PRENOM ,DIV FROM [BaseEleve$] WHERE DIV = '" & valrecherche & "';"

Set Rs = New ADODB.Recordset
'Rs.Open Cible, Cn, adOpenKeyset
Rs.CursorLocation = adUseClient
Rs.Open Cible, Cn, adOpenDynamic, adLockBatchOptimistic 'adLockOptimistic 'ou
If Not Rs.EOF Then Range("A2").CopyFromRecordset Rs

Rs.Close
Set Rs = Nothing
End Sub
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

re carlos,

Dans la cible la colonne DIV contient sûrement des numériques et ta requête recherche une chaine de caractères.

Si 302 est un numréque ta requête doit être:

Cible = "SELECT DISTINCT NOM, PRENOM ,DIV FROM [BaseEleve$] WHERE DIV = " & valrecherche & ";"

Sans les guillemets simples après le Div = " et avant le ;

A bientôt
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Re Hasco

Bravo ! Ca marche...

Tu as raison , dans ce champs DIV j'ai des classes nommées 401,402,403 (nombre) etc mais aussi des classes 4 A,4 B (Texte)etc.

Comment concilier les 2 formats dans une requête.

Merci et bonne journée
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Carlos,

ADO, teste par défaut les 8 ou 9 premiers enregistrement de chaque champs. En l'occurence puisqu'il s'agit d'un fichier excel les 8 ou 9 première cellules de chaque colonne pour en déduire la nature du champ suivant le tpe majoritaire rencontré dans ces 8 ou 9 cellules. Donc si dans ces 8 premières cellules de la colonne DIV il rencontre des textes et des numérique, ça lui fera perdre son latin.

Solution 1: transformer les données sources en textes ou en numériques mais pas de mélange. Puis réécrire la requête avec les ' nécéssaires si données textuelles.

solution 2:
changé la Extended properties de la connection avec:
"Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"""

Où HDR YES ou NO indique si la feuille contient ou non un entête pour les colonne
et où IMEX=1 force l'importation des données au format texte. Mais s'il y a des mises à jour par requête à effectuer dans la base IMEX=1 peut donner des résultat aléatoires.(valeur nulle entre autres surprises)


Là aussi je t'invite à consuter Ce lien n'existe plus
A bientôt
 
Dernière modification par un modérateur:
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Bonsoir Hasco , le forum

Merci beaucoup pour tes renseignements et tes liens.

A priori le :
"Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"""

ne permet pas d'obtenir indifféremment du texte et du numérique dans ma requête.

Tant pis.

Bonne soirée Carlos
 
Re : Ce pilote ODCB ne prend pas en charge les propriétés demandés

Carlos,

Eh oui, ADO a des contraintes auxquelles on est parfois obligé de se plier🙄

en espérant que tu pourras uniformiser tes données,

A bientôt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
771
Réponses
8
Affichages
11 K
Retour