Bonjour,

J’essaie de coder une macro qui me permettrait de copier les données d’une plage de cellule d’un classeur fermé vers un le classeur dans lequel je lance la macro.

La plage de cellules est variable en lignes, en colonne elle va de A2 :Y2

Voici les débuts de mon codes mais j’ai plusieurs souci :
- je suis obligé d’ouvrir les deux fichiers pour travailler et
- pour la copie en gros j’ai fait une liaison avec un autofill par colonne, c’est assez galère quand on a 24 colonnes. Utiliser la fonction copy ça serait pas mieux ?

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
33
Sub Copie()
 
'Calcul nombre de ligne à copier (bizarrement il faut avoir incidents.xls déjà ouvert même quand on est dans le même dossier)
 
    Dim drLig As Long
    drLig = Workbooks("incidents.xls").Sheets("OASIS").Range("A" & Rows.Count).End(xlUp).Row
    MsgBox (drLig)
 
'Désactive actualisation de l'écran pendant execution de la macro (optionel - voir si gain de perf)
 
    Application.ScreenUpdating = False
 
'Copie des cellules depuis fichier source
 
    Range("A2:A" & drLig).FormulaR1C1 = "=[incidents.xls]OASIS!RC"
 
'Remplissage de ces colones (sûrement à revoir)
 
    Range("A2").AutoFill Destination:=Range("A2:A" & drLig)
    'A recopier 24 fois pour avoir jusqu'à la colonne Y (Fastidieux !!)
 
 
'Redimensionnement des colonnes
 
    'Columns("A:AG").EntireColumn.AutoFit
 
'Actualisation tous les TCD
 
    ActiveWorkbook.RefreshAll
 
Application.ScreenUpdating = True
 
End Sub
Merci d’avance pour tout aide ou suggestion.