Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Code VBA pour insérer/Supprimer ligne dans un Tableau

  • Initiateur de la discussion Initiateur de la discussion djkev76
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

djkev76

XLDnaute Nouveau
Bonjour à tous,

Etant novice dans le codage VBA, j'ai besoin de vos services : à partir d'un Tableau défini, je souhaiterai pouvoir avoir 3 cas en cliquant sur 4 boutons :
- Insérer un nombre de lignes définis par l'utilisateur (sous forme de MsgBox) sous la ligne n°1 du Tableau, en conservant l'état de la ligne 1 comme modèle de lignes
- Supprimer 1 ou plusieurs lignes prédéfinies par l'utilisateur (sous forme de MsgBox)
- Effacer tout le tableau (RAZ), en supprimant les lignes insérées (sauf ligne n°1 du Tableau), en effaçant les cellules B3 et C3 qui sont des cellules nombre à entrer et en conservant la cellule D3 (car formule automatique)

Merci d'avance pour votre retour.
 

Pièces jointes

Bonjour et bienvenu

pour un novice, je conseille toujours de commencer par utiliser l'enregistreur de macro, qui bien souvent permet de donner une idée du code mis en jeu par l'action qu'on souhaite faire
ensuite.. il suffit d'adapter et optimiser ce code
ce qui, pour tes 3 boutons donnerait ces 3 macros à associer chacune à un de tes boutons
VB:
Sub InsertLine()
nbLigne = Application.InputBox("Combien de lignes souhaitez vous ajouter?")
With ActiveSheet.ListObjects(1)
    For i = 1 To nbLigne
        .ListRows.Add (1)
    Next i
End With
End Sub
Sub DeleteLine()
nbLigne = Application.InputBox("Combien de lignes souhaitez vous supprimer?")
With ActiveSheet.ListObjects(1)
    For i = 1 To nbLigne
        .ListRows(1).Delete
    Next i
End With
End Sub
Sub ClearLine()
With ActiveSheet.ListObjects(1)
    .DataBodyRange.ClearContents
End With
End Sub
 
Merci pour ton code, en revanche je souhaiterais que
- les lignes soient copiés en dessous de la ligne créée et non au-dessus
- Que j'ai le choix de la ou des lignes à supprimer (exemple, je ne veux supprimer que les lignes 3 et 5 de mon tableau sans que le reste ne soit altéré
- Que la ligne "n°1" de mon modèle reste en haut du tableau
 
Insérer un nombre de lignes définis par l'utilisateur (sous forme de MsgBox) sous la ligne n°1 du Tableau, en conservant l'état de la ligne 1 comme modèle de lignes
qu'appelles tu la ligne 1: la ligne d'entete?

Que la ligne "n°1" de mon modèle reste en haut du tableau
c'est ce que fait la macro: elle insère une ligne sous la ligne d'entete



les lignes soient copiés en dessous de la ligne créée et non au-dessus
quelles lignes sont copiées?? il est question juste d'insérer une ligne vide.. pas de copier coller..?

regarde les codes suivants avec les commentaires

VB:
Sub InsertLine()
nbLigne = Application.InputBox("Combien de lignes souhaitez vous ajouter?")
With ActiveSheet.ListObjects(1)
    For i = 1 To nbLigne
        .ListRows.Add
        'si on ne spécifie rien, la ligne sera créée EN BAS: comme dernière ligne
        '.ListRows.Add (1) si tu spécifies 1: la ligne sera créée en première position: Juste en dessous de la ligne d'entete
        '.ListRows.Add (4) si tu spécifies 4: la ligne sera créée en 4eme position
    Next i
End With
End Sub
Sub DeleteONELine()
nbLigne = Application.InputBox("tapez la ligne à supprimer")
With ActiveSheet.ListObjects(1)
    .ListRows(nbLigne).Delete
End With
End Sub
Sub DeleteLines()
nbLigne = Application.InputBox("tapez les lignes en ordre croissant à supprimer séparée d'un -")
LigToSup = Split(nbLigne, "-")

For i = UBound(LigToSup, 1) To LBound(LigToSup, 1) Step -1
    With ActiveSheet.ListObjects(1)
        .ListRows(CDbl(LigToSup(i))).Delete
    End With

Next i
End Sub
Sub ClearLine()
With ActiveSheet.ListObjects(1)
    .DataBodyRange.ClearContents
End With
End Sub
 
Je souhaite garder les fonctions de ma ligne d'en tete
 

 
Bonjour
Tu as déjà le code dans mon post 5
Oups désolé 🙂 Une autre question : j'ai une numérotation automatique de lignes du tableau, j'ai intégré une formule LIGNE en ajoutant 1. Seulement quand je supprime des lignes le chrono ne se met pas à jour voir me mets une erreur #REF. Sais tu comment faire pour remettre à jour automatiquement les références?
 
il faudrait que tu repostes ton fichier avec ton tableau et indiquer clairement de quoi tu parles
1ere ligne: ligne de données ou ligne d'entete?
pourquoi effacer un tableau mais garder la première ligne de données??
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
1 K
Réponses
5
Affichages
235
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…