Ajout de ligne en fin de tableau via bouton

Fermé
Marcogromlr Messages postés 4 Date d'inscription samedi 6 août 2016 Statut Membre Dernière intervention 11 août 2016 - 10 août 2016 à 15:53
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 11 août 2016 à 11:26
Bonjour,
je souhaiterais ajouter une ligne en fin de tableau en utilisant un bouton "ajout ligne"
Mon tableau se compose de 11 colonnes, avec des mises en forme conditionnelles, des une liste déroulante, des opérations simples dans les autres colonnes.
Le but est de recopier les opérations, la liste déroulante, les mises en forme conditionnelles, mais d'effacer les données de la ligne nouvelle-1.
Idéalement, les données précédentes doivent être verrouillées, et l'utilisateur ne peut modifier que la ligne en cours de création.

Pour l'instant j'ai accouché de cela.

Sub Bouton4_Cliquer() 'ajouter une ligne en fin de tableau
'ActiveSheet.Unprotect ' ôte la protection de la feuille
Range("a8").CurrentRegion.Rows(Range("a8").CurrentRegion.Rows.Count).Copy 'selectionne la derniere ligne du tableau
Range("a32").End(xlUp).Offset(1, 0).PasteSpecial 'ajouter la copie à la suite du tableau
Range("c9").ClearContents 'efface les données copiées
Range("e9").ClearContents 'efface les données copiées
Range("f9").ClearContents 'efface les données copiées
Range("i9").ClearContents 'efface les données copiées
'ActiveSheet.Protect 'remet la protection de la feuille

End Sub

Le soucis est que j'arrive bien à tout reproduire, mais lorsque je j'effectue par première incrémentation de ligne (en L9) et que je veux par la suite ajouter une nouvelle ligne (L10) ma ligne 9 devient vierge, et données se reportent en L10...puis en L12, L13...

Je n'arrive pas à obtenir ce que je recherche : une ligne 9 qui deviendrait à la première incrémentation du tableau ma dernière ligne, se figerait une ainsi de suite.

Quelqu'un aurait-il une solution à me proposer ?

Par avance merci à vous.

1 réponse

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 août 2016 à 10:00
Bonjour,

j'ai un début de solution à te proposer si cela te convient.

Transforme ton tableau en "tableau".
Pour ce faire, tu sélectionnes ton tableau, tu vas dans Insertion et tableau.

Quand tu ajouteras une ligne, les formules, le format... sera conservé.

Voici un exemple et fais les manipulations suivantes
https://www.cjoint.com/c/FHlh4UbYnfi

1°) enlève la protection : le mot de passe est "test"
2°) mets une valeur en A6,B6 C6 et E6
3°) Vois ce qu'il se passe en C6 et en D6

Dis moi ensuite si cela peut te convenir pour ton problème.
1
Marcogromlr Messages postés 4 Date d'inscription samedi 6 août 2016 Statut Membre Dernière intervention 11 août 2016
11 août 2016 à 11:17
ça apporte un peu d'eau à mon moulin mais cela ne résous pas mon problème.
Sans passer par une mise en forme de mes données sous forme de tableau, j'arrive à reproduire ma mise en forme et à, ajouter une ligne en fin de tableau sans que l'utilisateur ait cliquer dans la première cellule de la dernière ligne via la macro associée à mon bouton).
Le hic, c'est comme je reprends les formules et mises en forme issues de ma ligne 8, je ne veux pas les retrouver par la suite en L9. Je veux donc les effacer, ça j'y arrive. Je peux sereinement remplir ma ligne L9. Cependant lorsque je veux de nouveau ajouter une ligne, ma ligne 9 s'efface, les données se recopient en L10 (alors que je désire conserver la ligne L9 et avoir une ligne L10 vierge)...
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 août 2016 à 11:26
bonjour,

alors il faut modifier ton code :


Sub Bouton4_Cliquer() 'ajouter une ligne en fin de tableau
'ActiveSheet.Unprotect ' ôte la protection de la feuille
derniereligne = Range("A" & Rows.Count).End(xlUp).Row
Rows(derniereligne).Copy Rows(derniereligne + 1)


Cells(derniereligne + 1, 3).Clear
Cells(derniereligne + 1, 5).Clear
Cells(derniereligne + 1, 6).Clear
Cells(derniereligne + 1, 9).Clear
'ActiveSheet.Protect 'remet la protection de la feuille

End Sub
0