Macro xls. pour ajout de ligne en fin de tableau
Résolu
Er'icare
-
beneric27 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
beneric27 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Vba ajouter une ligne à la fin d'un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Aller à la ligne excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
1 réponse
Bonjour,
Comme ceci si j'ai compris ton désir :
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
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.