Si tu veux... Si tu disais plutôt ce que tu veux faire ? Tu ne peux pas mettre ActiveCell" entre guillemets de toutes façons. Daniel
OK....
Et si on remplaçait "A2" par ActiveCell ???
With ActiveSheet .Cells(1, 1).End(xlDown).Offset(1).Select
.Range("ActiveCell", .Cells(UBound(Arr, 1), UBound(Arr, 2))).Value = Arr End With
Denys
Denys
En fait, je vais chercher de l'information sur d'autres feuilles dans différents dossiers. Supposons que le dossier 1 contienne 50 lignes, je veux que l'information du Dossier 2 commence à la 51e ligne.
La macro provient du site de Frédéric Sigonneau et je l'utilise très souvent pour que les superviseurs puissent aller chercher de l'info, mais à chaque fois dans un seul autre fichier. Seulement cette fois- ci, l'info doit parvenir de plusieurs fichiers et je voudrais bien que l'info s'accumule à la suite...Voici la macro:
Sub LitEmployee() Dim Msg, Style, Title, Fich As String Dim Fich$, Arr Fich = "se094PierreDataCheque.xls"
'récup des données à partir de l'adresse d'une plage de cellules GetExternalData Fich, "Hidden", "A1:P5000", True, Arr
'récup des données à partir du nom d'une plage de cellules () 'GetExternalData Fich, "", "Tout", False, Arr
With ActiveSheet .Cells(1, 1).End(xlDown).Offset(1).Select
.Range(ActiveCell, .Cells(UBound(Arr, 1), UBound(Arr, 2))).Value = Arr 'C'est ici que ça bloque
End With
End Sub
(Merci, Denys)
'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 Integer Dim Arr
Set myConn = New ADODB.Connection If TTL = True Then HDR = "Yes" Else HDR = "No" myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & srcFile & ";" & _ "Extended Properties=""Excel 8.0;" & _ "HDR=" & HDR & ";IMEX=1;""" Set myCmd = New ADODB.Command myCmd.ActiveConnection = myConn If srcSheet = "" _ Then myCmd.CommandText = "SELECT * from `" & srcRange & "`" _ Else myCmd.CommandText = "SELECT * from `" & srcSheet & "$" & srcRange & "`" Set myRS = 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 = 1 To myRS.RecordCount 'lignes For RS_f = 0 To myRS.Fields.Count - 1 'colonnes Arr(RS_n, RS_f + 1) = myRS.Fields(RS_f).Value Next myRS.MoveNext Next Loop myConn.Close Set myRS = Nothing Set myCmd = Nothing Set myConn = Nothing
outArr = Arr
End Sub
Function IsFileOpen(filename As String) Dim filenum As Integer, errnum As Integer
On Error Resume Next filenum = FreeFile() Open filename For Input Lock Read As #filenum Close filenum errnum = Err On Error GoTo 0 Select Case errnum Case 0 IsFileOpen = False Case 70 IsFileOpen = True Case Else 'Error errnum End Select End Function End Sub
En fait, je vais chercher de l'information sur d'autres feuilles dans
différents dossiers. Supposons que le dossier 1 contienne 50 lignes,
je veux que l'information du Dossier 2 commence à la 51e ligne.
La macro provient du site de Frédéric Sigonneau et je l'utilise très
souvent pour que les superviseurs puissent aller chercher de l'info,
mais à chaque fois dans un seul autre fichier. Seulement cette fois-
ci, l'info doit parvenir de plusieurs fichiers et je voudrais bien que
l'info s'accumule à la suite...Voici la macro:
Sub LitEmployee()
Dim Msg, Style, Title, Fich As String
Dim Fich$, Arr
Fich = "\se094PierreDataCheque.xls"
'récup des données à partir de l'adresse d'une plage de cellules
GetExternalData Fich, "Hidden", "A1:P5000", True, Arr
'récup des données à partir du nom d'une plage de cellules ()
'GetExternalData Fich, "", "Tout", False, Arr
With ActiveSheet
.Cells(1, 1).End(xlDown).Offset(1).Select
.Range(ActiveCell, .Cells(UBound(Arr, 1), UBound(Arr,
2))).Value = Arr 'C'est ici que ça bloque
End With
End Sub
(Merci, Denys)
'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
Integer
Dim Arr
Set myConn = New ADODB.Connection
If TTL = True Then HDR = "Yes" Else HDR = "No"
myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & srcFile & ";" & _
"Extended Properties=""Excel 8.0;" & _
"HDR=" & HDR & ";IMEX=1;"""
Set myCmd = New ADODB.Command
myCmd.ActiveConnection = myConn
If srcSheet = "" _
Then myCmd.CommandText = "SELECT * from `" & srcRange & "`" _
Else myCmd.CommandText = "SELECT * from `" & srcSheet & "$" &
srcRange & "`"
Set myRS = 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 = 1 To myRS.RecordCount 'lignes
For RS_f = 0 To myRS.Fields.Count - 1 'colonnes
Arr(RS_n, RS_f + 1) = myRS.Fields(RS_f).Value
Next
myRS.MoveNext
Next
Loop
myConn.Close
Set myRS = Nothing
Set myCmd = Nothing
Set myConn = Nothing
outArr = Arr
End Sub
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
'Error errnum
End Select
End Function
End Sub
En fait, je vais chercher de l'information sur d'autres feuilles dans différents dossiers. Supposons que le dossier 1 contienne 50 lignes, je veux que l'information du Dossier 2 commence à la 51e ligne.
La macro provient du site de Frédéric Sigonneau et je l'utilise très souvent pour que les superviseurs puissent aller chercher de l'info, mais à chaque fois dans un seul autre fichier. Seulement cette fois- ci, l'info doit parvenir de plusieurs fichiers et je voudrais bien que l'info s'accumule à la suite...Voici la macro:
Sub LitEmployee() Dim Msg, Style, Title, Fich As String Dim Fich$, Arr Fich = "se094PierreDataCheque.xls"
'récup des données à partir de l'adresse d'une plage de cellules GetExternalData Fich, "Hidden", "A1:P5000", True, Arr
'récup des données à partir du nom d'une plage de cellules () 'GetExternalData Fich, "", "Tout", False, Arr
With ActiveSheet .Cells(1, 1).End(xlDown).Offset(1).Select
.Range(ActiveCell, .Cells(UBound(Arr, 1), UBound(Arr, 2))).Value = Arr 'C'est ici que ça bloque
End With
End Sub
(Merci, Denys)
'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 Integer Dim Arr
Set myConn = New ADODB.Connection If TTL = True Then HDR = "Yes" Else HDR = "No" myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & srcFile & ";" & _ "Extended Properties=""Excel 8.0;" & _ "HDR=" & HDR & ";IMEX=1;""" Set myCmd = New ADODB.Command myCmd.ActiveConnection = myConn If srcSheet = "" _ Then myCmd.CommandText = "SELECT * from `" & srcRange & "`" _ Else myCmd.CommandText = "SELECT * from `" & srcSheet & "$" & srcRange & "`" Set myRS = 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 = 1 To myRS.RecordCount 'lignes For RS_f = 0 To myRS.Fields.Count - 1 'colonnes Arr(RS_n, RS_f + 1) = myRS.Fields(RS_f).Value Next myRS.MoveNext Next Loop myConn.Close Set myRS = Nothing Set myCmd = Nothing Set myConn = Nothing
outArr = Arr
End Sub
Function IsFileOpen(filename As String) Dim filenum As Integer, errnum As Integer
On Error Resume Next filenum = FreeFile() Open filename For Input Lock Read As #filenum Close filenum errnum = Err On Error GoTo 0 Select Case errnum Case 0 IsFileOpen = False Case 70 IsFileOpen = True Case Else 'Error errnum End Select End Function End Sub