Reprenons :
VBA est un langage orienté objet. Tu travailles donc sur les objets : un classeur, une feuille, une cellule, la couleur d'une cellule, son contenu... Il existe une hiérarchie : les objets cellule se trouvent des objets feuilles qui se trouvent eux-même dans des objets classeurs.
On doit donc préciser à chaque fois l'objet sur lequel on travaille, en séparant ceux-ci par des points. Je souhaite écrire "bonjour" dans la cellule A1 de la feuille "Feuil1" de mon classeur "ClasseurBidon.xlsm" :
Sub Test()
Workbooks("ClasseurBidon.xlsm").Sheets("Feuil1").Range("A1").Value = "Bonjour"
End Sub
Si l'objet n'est pas explicitement précisé, Excel travaillera par défaut sur l'objet actif. Cela n'aura aucune incidence si avant de lancer la macro, je me trouve déjà sur la bonne cellule de la bonne feuille du bon classeur.
Dans ce cas, les écritures suivantes seront équivalentes :
ActiveWorkbook.ActiveSheet.ActiveCell.Value = "Bonjour"
ActiveSheet.ActiveCell.Value = "Bonjour"
ActiveCell.Value = "Bonjour"
Ainsi,
DerLig = UsedRange.Rows.Count
Compte le nombre de lignes utilisées dans la feuille active. Dans ta macro, tu travailles sur différentes feuilles de différents classeurs, il est donc impératif de préciser l'objet sur lequel il faut compter les lignes.