Importer data d'un fichier excel sous Windows 7 et Excel 2010
4 réponses
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
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?
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
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;"""
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;"""