Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Importer data d'un fichier excel sous Windows 7 et Excel 2010

4 réponses
Avatar
Denys
Bonjour =E0 tous,

Depuis plusieurs ann=E9es, l'usager clique sur un bouton dans un fichier ex=
cel 2003 et avec la macro qui suit importe les donn=E9es d'un autre fichier=
sans probl=E8mes et de fa=E7on tr=E8s rapide. Cette macro ne fonctionne pl=
us sous Excel 2010. Quelqu'un connaitrait la r=E9ponse ?

Voici la macro avec les d=E9tails....

Sub LitEmployee()
Dim Msg, Style, Title, Fichier As String
Fichier =3D "\\maple.com\data\montreal\transit\p01111b0\Denys\Excel 2010\" =
& ActiveSheet.Range("B1").Value & ".xlsm"
=20

If IsFileOpen(Fichier) Then
MsgBox "" & ActiveSheet.Range("B1").Value & "'s file is already in use"=
& Chr(13) & "Please try later"
Exit Sub
End If
Dim Fich$, Arr
Fich =3D ""\\maple.com\data\montreal\transit\p01111b0\Denys\Excel 2010\" =
& ActiveSheet.Range("B1").Value & ".xlsm"
=20
'r=E9cup des donn=E9es =E0 partir de l'adresse d'une plage de cellules
GetExternalData Fich, "Daily tasks", "A1:E5000", False, Arr
=20
'r=E9cup des donn=E9es =E0 partir du nom d'une plage de cellules ()
'GetExternalData Fich, "", "Tout", False, Arr

With ActiveSheet
.Range("A1", .Cells(UBound(Arr, 1), UBound(Arr, 2))).Value =3D Arr
End With
=20
End Sub


'Must have the Microsoft Activex Data Objects 2.0 Library
'in the tools----reference---in the VBA section
Sub GetExternalData(srcFile As String, _
srcSheet As String, _
srcRange As String, _
TTL As Boolean, _
outArr As Variant)
Dim myConn As ADODB.Connection, myCmd As ADODB.Command
Dim HDR As String, myRS As ADODB.Recordset, RS_n As Integer, RS_f As Intege=
r
Dim Arr
=20


Set myConn =3D New ADODB.Connection
If TTL =3D True Then HDR =3D "Yes" Else HDR =3D "No"

Excel bug ici.....et je ne sais pas pourquoi....

myConn.Open "Provider=3DMicrosoft.Jet.OLEDB.4.0;" & _
"Data Source=3D" & srcFile & ";" & _
"Extended Properties=3D""Excel 8.0;" & _
"HDR=3D" & HDR & ";IMEX=3D1;"""
Set myCmd =3D New ADODB.Command
myCmd.ActiveConnection =3D myConn
If srcSheet =3D "" _
Then myCmd.CommandText =3D "SELECT * from `" & srcRange & "`" _
Else myCmd.CommandText =3D "SELECT * from `" & srcSheet & "$" & srcRang=
e & "`"
Set myRS =3D New ADODB.Recordset
myRS.Open myCmd, , adOpenKeyset, adLockOptimistic
ReDim Arr(1 To myRS.RecordCount, 1 To myRS.Fields.Count)
myRS.MoveFirst
Do While Not myRS.EOF
For RS_n =3D 1 To myRS.RecordCount 'lignes
For RS_f =3D 0 To myRS.Fields.Count - 1 'colonnes
Arr(RS_n, RS_f + 1) =3D myRS.Fields(RS_f).Value
Next
myRS.MoveNext
Next
Loop
myConn.Close
Set myRS =3D Nothing
Set myCmd =3D Nothing
Set myConn =3D Nothing
=20
outArr =3D Arr
=20
End Sub


Merci pour votre temps

Denys

4 réponses

Avatar
Denys
Bon....

Il semblerait que le code suivant résoud les probèmes....

myConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & srcFile & ";" & _
"Extended Properties=""Excel 12.0;" & _
"HDR=" & HDR & ";IMEX=1;"""

Ca a fonctionné pour une application.....
Je teste les autres et reviens si je ne suis pas chanceux....

Merci

Denys
Avatar
MichD
Bonjour,

Tu as un message d'erreur? Si oui, quel est-il?

Dans ton code, il est écrit :
'Must have the Microsoft Activex Data Objects 2.0 Library

Tu pourrais majorer pour
'Must have the Microsoft Activex Data Objects 2.8 Library

Change ceci :
myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & srcFile & ";" & _
"Extended Properties=""Excel 8.0;" & _
"HDR=" & HDR & ";IMEX=1;"""

POUR :

Est-ce bien cette ligne de code qui est problématique?
myConn.Open = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & srcFile & ";" & _
"Extended Properties=""Excel 12.0; "HDR=" & HDR & ";IMEX=1;"""

As-tu toujours le même problème?
Avatar
Denys
Bonjour Denis

Tu as exactement trouvé ce qui n'allait pas...

Tout fonctionne bien maintenant

Bonne fin de journée

Denys
Avatar
Denys
Le jeudi 24 avril 2014 15:19:23 UTC-4, Denys a écrit :
Bonjour Denis Tu as exactement trouvé ce qui n'allait pas... Tout fonct ionne bien maintenant Bonne fin de journée Denys



Merci beaucoup :-)