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

XL 2013 Insertion d'une ligne dans tableau VBA

  • Initiateur de la discussion Initiateur de la discussion tico06
  • 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 !

tico06

XLDnaute Nouveau
Bonjour a tous,

Je souhaite insérer une nouvelle ligne au début de mon tableau excel tout en conservant les propriétés (formule, Mise en forme conditionnelles, format) de la ligne du dessous.
Mon tableau est un tableau structuré (nommé Tableau2).
Ce tableau comporte une entête en ligne 6 et commence en ligne 7. Il comporte 7 colonne (de B a H)

Merci d'avance pour votre aide
 
Solution
Bonsoir,

Opérations courantes sur les tableaux.
Il n'y a pas de problème avec la MFC même si on vide le tableau.
La formule est la même dans toute la colonne.

VB:
Sub SuppressionLigneTableau()
  n = 1
  If [tableau1].Item(n, 1) <> "" Then [tableau1].Rows(n).delete
End Sub


Sub InsèreLigneTableau()
  [tableau1].Rows(1).Insert
End Sub

Sub AjoutFinTableau()
  If [tableau1].Item(1, 1) <> "" Then n = [tableau1].Rows.Count + 1 Else n = 1
  [tableau1[nom]].Item(n, 1) = "xxxx"
End Sub

Sub VideTableau()
   If [tableau1].Item(1, 1) <> "" Then [tableau1].delete
End Sub

Boisgontier
Bonsoir tico06,

Les formats et la Mise en forme conditionnelle sont répercutés automatiquement sur la ligne insérée.

Par contre les formules ne sont pas copiées, pour cela utilisez cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
With ListObjects(1).Range
    If Application.CountA(.Rows(2)) Or .Rows.Count < 3 Then Exit Sub
    For Each c In .Rows(3).Cells
        If c.HasFormula Then c.AutoFill c(0).Resize(2), xlFillValues
    Next
End With
End Sub
Elle doit être placée dans le code de la feuille (clic droit sur l'onglet et Visualiser le code).

Elle s'exécute quand on modifie la feuille, y compris quand on insère des lignes.

A+
 
Dranreb bonjour,

Merci pour ton code
VB:
ListObjects("Tableau2").ListRows.Add Position:=1

L'Insertion de la ligne en début de tableau se fait bien par contre cela ne me recopie n'y les formules n'y les MFC

Merci d'avance pour votre aide
 
Chez moi la MFC se recopie automatiquement mais sa formule ne va pas, il y a un $ de trop sur $H$7, utilisez :
Code:
=ET($H7<AUJOURDHUI();NON(ESTVIDE($G7)))
Et la formule en colonne H se recopie aussi automatiquement.

Mais si vous avez un problème ajoutez ma macro du post #2, fichier joint.
 

Pièces jointes

Bonjour.
Là encore pour une raison que j'ignore, quand j'ai ouvert votre classeur la formule en H7 n'était pas prise comme étant celle de toute la colonne. Une fois propagée manuellement sur toute les lignes, elle l'est devenue, et est mise même si on supprime toutes les lignes du tableau avant d'en insérer une nouvelle. Et cette supression préalable ne bousille plus la réf de la formule MFC si corrigée comme indiqué par job75.
 
Bonsoir,

Opérations courantes sur les tableaux.
Il n'y a pas de problème avec la MFC même si on vide le tableau.
La formule est la même dans toute la colonne.

VB:
Sub SuppressionLigneTableau()
  n = 1
  If [tableau1].Item(n, 1) <> "" Then [tableau1].Rows(n).delete
End Sub


Sub InsèreLigneTableau()
  [tableau1].Rows(1).Insert
End Sub

Sub AjoutFinTableau()
  If [tableau1].Item(1, 1) <> "" Then n = [tableau1].Rows.Count + 1 Else n = 1
  [tableau1[nom]].Item(n, 1) = "xxxx"
End Sub

Sub VideTableau()
   If [tableau1].Item(1, 1) <> "" Then [tableau1].delete
End Sub

Boisgontier
 

Pièces jointes

Dernière édition:
- 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

Réponses
5
Affichages
265
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…