Ok. Pas de souci.
Tout d'abord, la fonction :
Private Function derlig_reelle(Plage As Range) As Long
If WorksheetFunction.CountA(Plage) = 0 Then derlig_reelle = Plage.Cells(1, 1).Row: Exit Function
derlig_reelle = Plage.Find("*", , , , , xlPrevious).Row
End Function
Elle se charge de trouver la dernière ligne remplie de la plage (Plage As Range) qu'on lui passe en paramètre.
Cette fonction utilise la méthode Find, méthode que je juges la moins mauvaise pour accomplir ce travail.
Ensuite la procédure Worksheet_Change() est une procédure événementielle de feuille. (C'est pourquoi il vous faut placer ce code dans le module de la feuille concernée.)
Cet événement est déclenché, comme son nom l'indique, lors de la modification (Change) d'une cellule de la feuille. Cette cellule est passée en argument de la procédure sous la variable Target.
Voici maintenant, plus en détail, cette procédure avec commentaires :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne As Long, DL As Long 'déclaration des variables
'Si la cellule modifiée (Target) appartient à la colonne M (13), N (14) ou P (16) Alors...
If Target.Column = 13 Or Target.Column = 14 Or Target.Column = 16 Then
'On stocke le numéro de sa ligne dans la variable Ligne
Ligne = Target.Row
'On évite la ligne 1
If Ligne > 1 Then
'Si le nombre de cellules remplies (countA est l'équivalant de la formule de calcul NBVAL)
'de la plage A:P de cette ligne = 16 (tout est remplit donc) Alors...
If Application.WorksheetFunction.CountA(Range("A" & Ligne & ":P" & Ligne)) = 16 Then
'On détermine la première cellule vide colonne A de la feuille Test_ (dernière ligne remplie + 1)
DL = derlig_reelle(Sheets("Test_").Columns(1)) + 1
'Cut = Couper (ici on coupe la plage A:P de la ligne Ligne) "ESPACE" Coller.
'On trouve, après Cut et l'espace, la plage de destination. Ici Feuille Test_, Col A, 1ère ligne vide
Range("A" & Ligne & ":P" & Ligne).Cut Sheets("Test_").Range("A" & DL)
'on supprime la ligne qui vient d'être coupée
Rows(Ligne).Delete Shift:=xlUp
End If
End If
End If
End Sub