Autres Problème avec CreateObject("ADODB.Connection")

Roland_M

XLDnaute Barbatruc
Bien le bonjour à tous,

en vérité ça fonctionne bien avec Excel 2007 et Excel 2016, mais pas sur mon pc fixe, explications:

c'est à ce niveau (qui est correcte, le problème n'est pas là)
Cnx.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & RepSource$ & Fich$ & ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'"

sur mon vieux pc portable avec Excel 2007 ma routine fonctionne bien !
sur mon pc fixe, plus récent, ça fonctionne aussi mais avec Excel 2016 ET PAS avec Excel 2007 !?!
pourtant il fut un temps ça fonctionné !?

du coup j'ai essayé avec ceci qui fonctionne, mais avec des manques !?
Cnx.Open "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & RepSource$ & Fich$ & ";HDR=Yes;IMEX=1"

donc je ne peux pas travailler avec ceci car il y des manques !?
tout se charge correctement excepté quand dans les cellules
il a des valeurs du genre: "5878/00" ou "10-11-"

soit deux questions:
1' pourquoi qu'avec excel 2007 ça fonctionne pas/plus sur mon pc fixe, alors qu'avec 2016 ça fonctionne ?
2' pourquoi qu'avec la 2' méthode j'ai ces manques ?

un grand merci à tous ceux qui pourraient m'aider !
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
c'est bien le souci avec ad...C
pour tes manques
dans la colonne ou tu a des manques c'est fort possible qui y est des données de différents type
ça adobe.conexion n'aime pas
il me faudrait un fichier exemple qui te pose problème pour tester
pierre sur DVP m'avait donné la méthode pour parvenir a sauter ce truc mais c'est assez verbeux comme code
 

Roland_M

XLDnaute Barbatruc
bien le bonjour à toi Patrick,

c'est pas possible de tester les valeurs car c'est divers !
j'ai un tableau variant: Tablo = Rst.GetRows
et quand il a cette valeur qu'il ne digère ça donne un "Null" ! j'ai vu ça en faisant le pas à pas (F8)
c'est un tableau de données (entreprise verrerie)
No IS/Refce/NoPal/Défaut/Commentaire/Retriage(oui/non)
445878/001*Ebréché cordonCommentairenon
34591610-11-Pincéeoui
344658/011*Ebréché cordonnon

même "5878/01" parfois ça passe et parfois ça passe pas !?!

je viens de voir que c'est seulement avec la 2' colonne !?
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
et oui 2 type de données différentes
avec ado il faut que les données soit du même type que celle de la ligne 1 et cela pour toutes les colonnes
sinon essaie avec un recordset voir même copyfromrecordset chez moi ça marche avec ton tableau donné en post#3
445878/001*Ebréché cordonCommentairenon
34591610-11-Pincéeoui
344658/011*Ebréché cordonnon

VB:
Sub testAdO()
    Dim fichier$, nomfeuille$, DispoCel As Range
    fichier = ThisWorkbook.Path & "\exemple source.xlsx"
    nomfeuille = "feuil1"
    Set DispoCel = [A1]
    Set plage = [A1:F3]
    resADO plage, fichier, nomfeuille, DispoCel
End Sub
Function resADO(plage, fichier, nomfeuille, destination)

'Dim Cn As ADODB.Connection, texte_SQL$, Rst As ADODB.Recordset
    Dim Cn As Object, texte_SQL$, Rst As Object
      Set Cn = CreateObject("ADODB.Connection")
     Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"";"
         texte_SQL = "SELECT * FROM [" & nomfeuille & "$" & plage.Address(0, 0) & "]"  'la requête.    ' Attention!!!!!!! à ne pas oublier le symbole "$" après le nom de la feuille.
     Set Rst = CreateObject("ADODB.RecordSet")
    Set Rst = Cn.Execute(texte_SQL)
    destination.CopyFromRecordset Rst
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing: Set Rst = Nothing
End Function

sinon avec toujours le resordset mais avec getrow pour en faire une variable tableau

les deux méthode match chez moi 2013 et 2016 sur W7 et W10
 

Pièces jointes

  • fichier Ado copyfromrecordset.xlsm
    21.1 KB · Affichages: 12
  • fichier Ado dans variable tableau.xlsm
    23 KB · Affichages: 5
  • exemple source.xlsx
    9.1 KB · Affichages: 4

Roland_M

XLDnaute Barbatruc
re:

Patrick, c'est justement ça qui ne fonctionne pas sur mon PC_FIXE avec EXCEL 2007 !
Revoir explications sur mon post#1
Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"";"

en fait ça fonctionne,
sur mon PC_FIXE mais seulement avec EXCEL 2016 (car j'ai les 2 versions)
sur mon Vieux PC portable avec Excel 2007

pourquoi ça ne fonctionne pas/plus sur mon PC_FIXE avec 2007 !?
peut être le fait d'avoir installé 2016

c'est pourquoi j'utilise ceci:
Cnx.Open "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & RepSource$ & Fich$ & ";HDR=Yes;IMEX=1"
qui lui fonctionne ! mais il y a des manques sur des types de données différentes !
du coup je chercher une solution !?

Mais je vais laissé tomber, c'est propre à mon pc_fixe !
mais avant ça fonctionnait, c'est depuis l'installation d'excel 2016 ! qu'est ce qu'il s'est passé !?!
 

dysorthographie

XLDnaute Accro
Bonjour,
De toute évidence tes explications ne sont pas claires et pourtant tu nous renvoie à ton premier poste comme si nous étions sourd!
Code:
With cn1
    .Provider = "Microsoft.ACE.OLEDB.16.0"
    .ConnectionString = "Data Source=" & strfile & ";" & _
    "Extended Properties=""Excel 16.0 xml;HDR=No;IMEX=1;Readonly=True"""
End With

Il peut également avoir une différence à partir de Excel 16!

Ne nous gaves pas en comparant ce qui marche avec ce qui marche pas mais donnes nous toutes les informations que tu peux uniquement sur ce qui marche pas!

On ne sait plus si c'est 2007 ou 2016 qui te poses problème !
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
ben tu a sans doute fait sauter ou remplacer une librairie installée avec 2007
c'est compliqué de faire cohabiter 2 versions d'excel ,perso je l'ai fait pendant quasiment 1 an avec 2007 et 2013
sans cesse obligé de remettre des dll qui sautent (faut en avoir l'utilité pour s'en rendre compte)et quand utilisation de références faire attention de cocher la bonne version ce qui veut dire que createobject tu oublie toujours travailler en earlybinding ""dim cn as new adobe.connection""
perso je prend toujours la plus petite pour ado


comme tu peut le voir dans cette capture je possede encore la version installée avec 2007 et celle avec 2013

1611481518697.png



regarde la partie createobject dans cette page
 

Pièces jointes

  • 1611481363802.png
    1611481363802.png
    57.9 KB · Affichages: 20

Roland_M

XLDnaute Barbatruc
re

@patrick, c'est cela le problème, tu as tout compris, c'est la cohabitation des deux versions !
je vais étudier ça ! je te remercie de intéresser à mon cas !

@dysorthographie: je m'excuse c'était pourtant clair, je ne peux pas faire mieux !
j'ai deux versions et la cohabitation pose problème !
du, coup j'utilisé une autre méthode, le problème était qu'il y avait des manquants !
 

dysorthographie

XLDnaute Accro
Bonjour,
Quel librairie manquantes ?

En tous les cas il ne faut pas , autant ce faire ce peut, activer les références dans le projet VB si on dispose d'un parc etherogene et lui préfère creatobject !

De toutes évidence tu as deux versions mais sur plusieurs machines car si les deux versions était sur la même machine tu n'aurais pas de manquantes !

Le problème provient quand un fichier excel est utilisé sur des excel de versions différentes !

Dans tes explications je n'es pas compris cela !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[Juste en passant]
1) Je prends mon disque dur amovible
2) Je le branche sur une prise USB du PC fixe qui fait des misères
et j'y copie tous les classeurs que je dois traiter.
3) Pendant ce temps je bois un café et j'écoute une musique de mon choix (sauf si je suis en USB3 et que la recopie est très rapide ;))
4) Je branche le HD sur le PC où mon Excel il marche du feu de dieu.
et je fais mes traitements par macro
Là, j'ai le temps de finir mon café ou d'en boire un second et d'écouter (je dirai pour ce matin: Echoes ;))
5) Tout s'est bien passé, plus de prise de tête, le soleil brille, le traitement VBA s'est achevé avec succès.
O joie O Bonheur ;)
[/Juste en passant]
 

patricktoulon

XLDnaute Barbatruc
re perso Ado c'est pas une prise de tète quand ton exploitation est propre

je sais très bien dans quelle galère est Rolland j'ai fait la même chose l'année dernière comme j'avais pas envie de modifier des fichier créés avec 2007 mais bon après on passe plus de temps a réparer ,bricoler
j'ai donc divorcé de 2007 et fait une réparation de 2013
et encore je suis resté en 32 bits j'imagine même pas ceux qui font cohabiter les versions (32/64)

Rolland si ta version 2016 est 32 bits fait sauter les deux installs(2007/2016)
et nettoie ton registre de toute clé concernant "Office" sans distinction
et réinstalle 2016 au propre
si ta version 2016 est une 64 reste en 2007 sauf si tu veux utiliser PW
 

Discussions similaires

Réponses
8
Affichages
273

Statistiques des forums

Discussions
312 167
Messages
2 085 901
Membres
103 027
dernier inscrit
Dridi Ahmed