Macro xls. pour ajout de ligne en fin de tableau

Résolu/Fermé
Er'icare - Modifié par crapoulou le 19/09/2016 à 17:26
beneric27 Messages postés 7 Date d'inscription lundi 19 septembre 2016 Statut Membre Dernière intervention 21 février 2017 - 20 sept. 2016 à 18:55
Bonjour,
J'ai un problème sur ma macro:
La ligne qui s'ajoute en fin de tableau est une copie de la dernière ligne et non une copie de la ligne 20 qui est vierge de données. Peut-on m'aider svp ? Merci

Sub ajout_ligne()

Application.ScreenUpdating = False

ActiveSheet.Unprotect
ligne_max = Range("FF1").Value
    Range("A20").Select
    Selection.End(xlDown).Select
    Range(Selection, Cells(ActiveCell.Row, 162)).Select
    Selection.Copy
    Cells(ligne_max + 1, 1).Select
    ActiveSheet.Paste
    Range(Cells(ligne_max + 1, 2), Cells(ligne_max + 1, 2)).Select
    Selection.ClearContents
    Range("A20").Select

Application.ScreenUpdating = True
    
End Sub



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
19 sept. 2016 à 22:04
Bonjour,

Comme ceci si j'ai compris ton désir :
Sub ajout_ligne()

Application.ScreenUpdating = False
Dim ligne_max As Long
With ActiveSheet
    .Unprotect
    ligne_max = .UsedRange.Rows.Count
    .Rows(ligne_max).Resize(2).FillDown
    .Cells(ligne_max + 1, 2).ClearContents
    Range("A20").Select
'    .protect ' on reprotège si l'on a déprotégé
End With
Application.ScreenUpdating = True    
End Sub
1
beneric27 Messages postés 7 Date d'inscription lundi 19 septembre 2016 Statut Membre Dernière intervention 21 février 2017
19 sept. 2016 à 23:50
Sub ajout_ligne()

Application.ScreenUpdating = False

ActiveSheet.Unprotect
ligne_max = Range("FF1").Value (FF1:compteur incrémenté par le dernier indice de ligne +20, car 20 lignes non utilisées)
Range("A20").Select (ligne vierge à copier)
Selection.End(xlDown).Select
Range(Selection, Cells(ActiveCell.Row, 162)).Select (copie de la ligne jusqu'à la colonne 162)
Selection.Copy
Cells(ligne_max + 1, 1).Select (colle les cellules copier sous la cellule qui a le plus grand indice)
ActiveSheet.Paste
Range(Cells(ligne_max + 1, 2), Cells(ligne_max + 1, 2)).Select
Selection.ClearContents
Range("A20").Select

Application.ScreenUpdating = True

End Sub

Ce ne sont pas les cellules de A20 à FD20 (la 162ème cellules de la ligne) qui sont copiées mais les cellules Ax à FDx de l'indice de ligne x+20 (car indice commençant à 1 en ligne 21)pour créer les cellules Ax+21 à FDx+21 (ligne_max+1)
je ne pense pas qu'il s'agisse d'un problème de protection.
0
beneric27 Messages postés 7 Date d'inscription lundi 19 septembre 2016 Statut Membre Dernière intervention 21 février 2017
20 sept. 2016 à 18:53
problème résolu. Ma ligne 20 ne doit pas être masquée
0
beneric27 Messages postés 7 Date d'inscription lundi 19 septembre 2016 Statut Membre Dernière intervention 21 février 2017
20 sept. 2016 à 18:55
Merci néanmoins de ton aide
0