Bonjour à tous,

Nouveau en programmation vba pour le boulot, je dois créer un outil qui va récupérer des données dans un autre classeur.
Avec mon code ci dessous, il calcule la dernière ligne dans ma feuille actuelle et non celle qu'il devrait normalement ouvrir.

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
34
35
 
Private Sub CommandButton1_Click()
    ' Déclaration des variables
    Dim xlApp As New Excel.Application ' déclarer Public si dans un module
    Dim xlBook As New Excel.Workbook
    Dim xlSheet As New Excel.Worksheet
    Dim year As Long
    Dim chemin As String
    Dim DL, DL2 As Long
 
    ' Récupération de l'année en cours
    year = Range("A1").Value
    chemin = "\\Ficsm02\ec_drh_dsi_cadres\Direction de soins\POOL DE SUPPLEANCE (EN CONSTRUCTION)\BESOINS DES POLES\"
 
    'Ouvrir le classeur dont on a besoin avec tout le chemin...
    Set xlBook = xlApp.Workbooks.Open(chemin & year & "\" & CommandButton1.Caption & ".xlsm")
    Set xlSheet = xlBook.Sheets(TextBox1.Value) ' si on veut utiliser une feuille en particulier
 
    'On copie la plage désirée
    With xlSheet
        DL = Range("D" & Rows.Count).End(xlUp).Row
        MsgBox ("La dernière ligne est " & DL & "!")
        .Range("B4:O" & DL).Copy
    End With
 
    ' On revient sur notre classeur
    ActiveSheet.Select
 
    ' On définit la dernière ligne libre
    DL2 = Range("D65536").End(xlUp).Row + 1
 
    Range("B" & DL2).PasteSpecial Paste:=xlPasteValues
 
    Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
    MsgBox "Fin du traitement des données !" 'message
Merci pour vos éclaircissement.

Bonne journée,