Bonjour a tous !
J'ai essaye de creer une petite macro qui permet de copier une plage provenant d'un autre fichier et de la coller dans la deuxieme feuille du fichier de la macro. Malheureusement, j'ai un petit probleme...
Je ne comprends pas pourquoi ceci ne fontionne pas:
alors que ceci fontionne (meme methode de copie sauf que pas sur un autre fichier mais sur la feuille active):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub copyData() Dim ws As Worksheet Dim copyRange As Range Dim startingCell, lastCell As Range Set ws = ActiveWorkbook.Sheets(2) 'select file On Error Resume Next wbName = Application.GetOpenFilename(FileFilter:="(*.xls* ),*.slsx" _ , Title:="Select workbook") If wbName = False Then Exit Sub End If Workbooks.Open (wbName) 'Selecting range to copy: from A5 to last cell column - 2 (ex.: last cell is D7, we will copy from A5 to B7) Set lastCell = Cells(100000, 1).End(xlUp) Set lastCell = Range(lastCell.Address).End(xlToRight).Offset(0, -2) Set startingCell = Range("A5") Set copyRange = Range(startingCell.Address, lastCell.Address) copyRange.Copy ws.Range("A1") exitSub: ActiveWorkbook.Close 'ws.Cells.ClearFormats ws.Columns.EntireColumn.AutoFit End Sub
Dans le premier code j'ai enleve toute gestion d'erreur pour essayer de comprendre, visiblement le programme ignore juste toutes les instructions concernant lastCell, cad j'ai essaye de mettre des Msgbox lastCell.Value et ca ne m'affichait rien (pas une msgbox vide, non, juste pas de msgbox du tout), alors que ca fonctionne niquel avec un msgbox startingCell.Value. Et le programme continuait jusqu'a la fin, il ne m'envoyait aucun message d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub test() Set ws = ActiveWorkbook.Sheets(2) Set lastCell = Cells(100000, 1).End(xlUp) Set lastCell = Range(lastCell.Address).End(xlToRight).Offset(0, -2) Set startingCell = Range("A5") Set copyRange = Range(startingCell.Address, lastCell.Address) copyRange.Copy ws.Range("A1") End Sub
Pourrait-on m'eclairer s'il vous plait?
Merci d'avance !
(et desole mais je n'ai pas d'accents sur mon clavier !)
Partager