Signaler

Macro xls. pour ajout de ligne en fin de tableau [Résolu]

Posez votre question Er'icare - Dernière réponse le 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.
Afficher la suite 
Utile
+0
moins plus
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
beneric27 5Messages postés lundi 19 septembre 2016Date d'inscription 20 septembre 2016 Dernière intervention - 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.
Répondre
beneric27 5Messages postés lundi 19 septembre 2016Date d'inscription 20 septembre 2016 Dernière intervention - 20 sept. 2016 à 18:53
problème résolu. Ma ligne 20 ne doit pas être masquée
Répondre
beneric27 5Messages postés lundi 19 septembre 2016Date d'inscription 20 septembre 2016 Dernière intervention - 20 sept. 2016 à 18:55
Merci néanmoins de ton aide
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !