Bonjour,
J'ai de temps en temps besoin d'importer des cellules de d'autres classeurs (fermés) dans un nouveau et pour cela j'utilise la macro suivante :
Cela m'importe donc les cellules C1, D35, D36, etc... dans un nouvel onglet.
Néanmoins cette fois-ci j'aurais besoin d'importer deux colonnes entières (ou au moins les 500 premières lignes des colonnes A et B).
Est-il possible de modifier facilement la macro précédente ? Ou faut il ajouter les colonnes à importer cellules par cellules ?
Info(1, 1) = S.Range("A1")
Info(1, 2) = S.Range("A2")
Info(1, 3) = S.Range("A3")
Info(1, 4) = S.Range("A4")
etc...
Merci pour votre aide et bonne journée !
J'ai de temps en temps besoin d'importer des cellules de d'autres classeurs (fermés) dans un nouveau et pour cela j'utilise la macro suivante :
Code:
Sub Refinancement()
Dim FSO 'As Scripting.FileSystemObject
Dim SourceFolder 'As Scripting.Folder
Dim FileItem 'As Scripting.File
Dim chemin$
Dim T()
Dim cpt&
Dim g&
Dim i&
Dim j&
Dim Lig&
Dim var
Dim WB As Workbook
Dim S As Worksheet
Dim DEST As Worksheet
Dim Info(1 To 1, 1 To 26)
'------------
chemin$ = "V:\ordi\test"
If chemin$ = "" Then Exit Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder(chemin$)
If SourceFolder.Files.Count = 0 Then Exit Sub
For Each FileItem In SourceFolder.Files
If LCase(Right(FileItem.Name, 4)) = ".xls" Or LCase(Right(FileItem.Name, 5)) = ".xlsx" Or LCase(Right(FileItem.Name, 5)) = ".xlsm" Then
cpt& = cpt& + 1
ReDim Preserve T(1 To cpt&)
T(cpt&) = chemin$ & "\" & FileItem.Name
End If
Next FileItem
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing
'------------
Application.ScreenUpdating = False
Set DEST = Sheets.Add
Lig& = 1
For g& = 1 To UBound(T)
Set WB = Workbooks.Open(Filename:=T(g&), ReadOnly:=True, UpdateLinks:=0)
Set S = WB.Sheets("test")
Info(1, 1) = S.Range("c1")
Info(1, 2) = S.Range("d35")
Info(1, 3) = S.Range("d36")
Info(1, 4) = S.Range("e35")
Info(1, 5) = S.Range("e36")
WB.Close False
Set WB = Nothing
Lig& = Lig& + 1
DEST.Range(DEST.Cells(Lig&, 1), _
DEST.Cells(Lig&, UBound(Info, 2))) = Info
Erase Info
Next g&
var = Array("Date", "nom", "prénom", "ville", "age")
With DEST
.Range(.Cells(1, 1), .Cells(1, UBound(var) + 1)) = var
.Range("a1:e1").Interior.ColorIndex = 6
.Name = "Macro test"
End With
Application.ScreenUpdating = False
Exit Sub
Erreur:
Application.ScreenUpdating = False
MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description
End Sub
Cela m'importe donc les cellules C1, D35, D36, etc... dans un nouvel onglet.
Néanmoins cette fois-ci j'aurais besoin d'importer deux colonnes entières (ou au moins les 500 premières lignes des colonnes A et B).
Est-il possible de modifier facilement la macro précédente ? Ou faut il ajouter les colonnes à importer cellules par cellules ?
Info(1, 1) = S.Range("A1")
Info(1, 2) = S.Range("A2")
Info(1, 3) = S.Range("A3")
Info(1, 4) = S.Range("A4")
etc...
Merci pour votre aide et bonne journée !