Microsoft 365 Ajouter une ligne dans un tableau structuré

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 !

Lune999

XLDnaute Nouveau
Bonjour à toutes et tous,

J'essaye tant bien que mal depuis quelques jours de trouver comment ajouter une ligne à mon tableau lorsque la dernière cellule de la colonne C de ce dernier n'est pas vide.
Mon tableau démarre en A3 et fini en colonne BA.

Voici mes tentatives infructueuses comme vous vous en doutez...

Merci d'avance de votre aide 🙂

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False: Dim L%

With Sheets("Suivi Référencement")

For L = Range("A65536").End(xlUp).row To 2 Step -1
If Cells(L, 1) <> "" And Cells(L - 1, 1) <> "" Then
If Cells(L, 1) <> Cells(L - 1, 1) Then Cells(L, 1).EntireRow.Insert
End If
Next
End With
End Sub
-------------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("CellSaisie").Address Then

With Range("CellSaisie")
Range(Cells(.Row, "C"), Cells(.Row, "BA")).Insert
.Offset(-1, 0).Value = .Value

Application.EnableEvents = False
.Value = ""
Application.EnableEvents = True

.Offset(-1, 1).Select
End With
End If
End Sub
 
Solution
Bonjour à tous,

Essayez :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   With Range("a4").ListObject
      If .ListRows.Count > 0 Then
         If .ListRows(.ListRows.Count).Range(1, "c") <> "" Then .ListRows.Add
      Else
         .ListRows.Add
      End If
   End With
End Sub

Le même code commenté
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   With Range("a4").ListObject   ' avec le tableau structuré TS qui contient la cellule A4
      If .ListRows.Count > 0 Then
         ' si l'objet référençant les lignes(.ListRows) du TS contient au moins une ligne
         ' On teste la cellule de la dernière ligne et de la colonne "c"
         ' si la cellule est vide, on ajoute une ligne
         If...
Bonjour

Avec un fichier, ce serait plus pratique et compréhensible

en attendant, un peu de lecture pour les tables structurées
 
Bon j'ai essayé de faire deux nouvelles macros mais aucune ne fonctionne comme j'aimerais. L'une tourne en boucle sans s'arrêter mais ajoute bien une ligne à la fin, l'autre qui ne fonctionne pas mais je pense être proche de réussir...

Merci d'avance de vos conseils !


Macro qui tourne en boucle

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerniereValeur As Long

DerniereValeur = Range("C" & Rows.Count).End(xlUp).Select 'Selectionne la dernière cellule du tableau "Suivi"

If Range("C" & Rows.Count).Value = "" Then

Exit Sub 'Si la dernière cellule de la colonne C est vide alors quitte la macro

Else
ActiveSheet.ListObjects("Suivi").ListRows.Add AlwaysInsert:=True 'autrement, insère une nouvelle ligne au tableau

End If

End Sub


Macro qui ne fonctionne pas

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerniereValeur As Long


DerniereValeur = Range("C" & Rows.Count).End(xlUp).Select 'Selectionne la dernière cellule du tableau "Suivi"

ActiveSheet.ListObjects("Suivi").ListRows.Add AlwaysInsert:=True 'autrement, insère une nouvelle ligne au tableau

Exit Sub

End Sub
 

Pièces jointes

Je ne comprend l'objectif de ton code..
ajouter une ligne au tableau "suivi" ??

AUCUN code n'est necessaire pour ca
il suffit d'écrire une donnée juste SOUS le tableau ==> la table structurée s'adapte automatiquement

sinon, si tu veux ajouter une ligne vide (ce qui est à éviter), tu peux cliquer sur le bouton "Ajouter ligne"

va voir le code associé (une ligne)
 

Pièces jointes

Bonjour à tous,

Essayez :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   With Range("a4").ListObject
      If .ListRows.Count > 0 Then
         If .ListRows(.ListRows.Count).Range(1, "c") <> "" Then .ListRows.Add
      Else
         .ListRows.Add
      End If
   End With
End Sub

Le même code commenté
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   With Range("a4").ListObject   ' avec le tableau structuré TS qui contient la cellule A4
      If .ListRows.Count > 0 Then
         ' si l'objet référençant les lignes(.ListRows) du TS contient au moins une ligne
         ' On teste la cellule de la dernière ligne et de la colonne "c"
         ' si la cellule est vide, on ajoute une ligne
         If .ListRows(.ListRows.Count).Range(1, "c") <> "" Then .ListRows.Add
      Else
         ' si TS est vide, on ajoute sa première ligne
         .ListRows.Add
      End If
   End With
End Sub
:
 

Pièces jointes

Dernière édition:
Merci beaucoup pour ta réponse @mapomme, cela fonctionne du tonnerre !
Merci aussi pour ton aide @vgendron et pour répondre à ta question j'ai utilisée des formules qui ne fonctionnent pas si j'écris juste sous le tableau, par expl :
=SI($C3="";"";SI($D3<>"";$D3;AUJOURDHUI())))

J'avais donc besoin d'une formule pour ajouter une nouvelle ligne 🙂

Très bon après-midi à vous deux !
 
- 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
4
Affichages
358
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
245
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
230
Réponses
2
Affichages
372
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
Réponses
4
Affichages
446
Retour