Excel vba - xlDown

Le code ci-dessous est d'essayer de coller la plage sélectionnée (passé en rng) à la fin de la feuille de calcul.
Il fonctionne si il y a déjà 2 lignes déjà présentes(A1, A2).

Sub copyRow(rng As Range, ws As Worksheet)
    Dim newRange As Range
    Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
    rng.Copy
    newRange.PasteSpecial (xlPasteAll)
End Sub

Donc, si A1 et A2 sont présents et si vous appelez cette méthode 100 fois, il insère 100 lignes après. Mais, si aucune ligne n'présents ou A1 seulement, il vient de remplacer A2. J'ai pu voir excel écrire sur la même ligne (écraser)

Semble que quelque chose à voir avec la façon dont xlDown calcule si il y a moins de 2 lignes, pas sûr.

Toute aide serait appréciée.

OriginalL'auteur bsr | 2012-02-22