compatibilité excel 2016 64 Bits - 2010 32 Bits Méthode ADO
bonjours à tous
je reviens vers vous suite à un problème sur une macro qui fonctionne parfaitement sous excel 2016 64 Bits mais pas sous excel 2010 32 Bits.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
Sub RequeteClasseurFerme(dev As String, val As String)
On Error Resume Next
Dim Cn As ADODB.Connection
Dim fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
'Définit le classeur fermé servant de base de données
fichier = "Y:\R&D\Ressources techniques\Bdb Nomenclature\Base de données Nomenclature.xlsx"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Base"
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
MsgBox Cn.State
'----------------
'Définit la requête.
'/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
texte_SQL = "SELECT * " & _
"FROM [Feuil1$]" & _
"WHERE Valeurs='" & val & "' AND Device='" & dev & "'"
',
' Valeurs='" & val1 & "'"
'
' AND Valeurs='" & val1 & "'
MsgBox texte_SQL
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)
MsgBox Rst.CacheSize
If Not (Rst.EOF) Then
Dim test As Variant
Workbooks("Nomenclature Vièrge").Worksheets("Nomenclature").Range("A1").CopyFromRecordset Rst
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
Else
'--- Fermeture connexion ---
Cn.Close
Range(Cells(1, 1), Cells(1, 8)).ClearContents
Set Cn = Nothing
Range("B1") = val
Range("A1") = dev
'Workbooks("Nomenclature Vièrge").Worksheets("Nomenclature").Range("A1").Select
new_entree.Show
Call Module.RequeteClasseurFerme_Excel2007(dev, val)
End If
End Sub |
Dans les 2 cas le Cn.state renvoie 1 l’accès à la base est donc correct, et le Rst.CacheSize renvoie 1 aussi donc il y a bien une ligne de réponse dans la requête. Le probléme est que dans excel 2010 la réponse ne se colle pas dans le classeur.
Merci pour votre aide :)
Hermes