Salut,
En fait, la ligne :
dl = .Cells(.Rows.Count, 53).End(xlUp).Row
se lit comme suit : dl vaut le numéro de ligne (row) de la première cellule obtenue en remontant à partir de la cellule (65000, 53), c'est à dire à la ligne 65000 et à la colonne 53.
end est une méthode qui permet le déplacement "global" sur des zones (ctrl + flèche), rows.count renvoie le nombre de lignes sur la feuille (ça ne vaut pas exactement 65000 d'ailleurs).
Or, j'imagine qu'en colonne 53, il ne doit pas y avoir beaucoup de valeurs , donc dl vaut 1 car la méthode end a remonté la totalité de la colonne, n'ayant rien trouvé sur son passage.
dl = .Cells(.Rows.Count, 1).End(xlUp).Row 'dernière non vide en colonne 1 ("A")
Tu peux modifier le 1 par "A" et tu peux bien entendu choisir une autre colonne (celle contenant le plus de valeurs) car de mémoire, il y avait plus de valeurs en colonne G qu'en colonne A.