insertion d'une ligne automatique dans un tableau excel.

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 !

ATHE RIOVELI

XLDnaute Occasionnel
Bonsoir à tous,
je souhaite une correction pour mon code.
Lorsque je met une donne en B3, et que je valide, je souhaite une insertion de ligne automatique. La cellule La ligne ou se trouve EFFECTIF doit aussi décaler vers le bas.
Voici ici le code et le fichier :

VB:
Option Explicit

Dim flag1 As Boolean ' Déclaration de flag1

Private Sub Worksheet_Change(ByVal Target As Range)
    If flag1 Or ListObjects.Count = 0 Then Exit Sub
    flag1 = True 'pour bloquer la macro
    Dim br As Range, r As Range, P As Range
    Set br = ListObjects(1).DataBodyRange
   
    '---Décale les moyennes en fonction de la ligne EFFECTIF---
    If br.Rows(br.Rows.Count).Row + 1 = [EFFECTIF].Row Then
        [EFFECTIF].EntireRow.Insert
        [EFFECTIF].EntireRow(0).Clear 'efface la ligne précédente
    End If
   
    '---Efface les doublons dans la colonne A---
    Set P = Intersect(Target, br.Columns(1))
    If Not P Is Nothing Then
        For Each r In P
            If Application.CountIf(br.Columns(1).Offset(1), r) > 1 Then
                r.Select
                MsgBox "Doublon !", vbExclamation
                r.ClearContents
            End If
        Next
    End If
   
    '---Suppression des lignes des noms effacés dans la colonne A---
    On Error Resume Next
    br.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0
   
    flag1 = False
End Sub
 

Pièces jointes

Dernière modification par un modérateur:
Bonsoir ATHE RIOVELI,
Une macro événementielle comme Worksheet_Change doit se trouver obligatoirement dans la feuille concernée et non dans un module standard. Voir PJ.
Je ne suis pas allé plus loin dans l'analyse.
Cependant la réactivation de Application.EnableEvents = True oit se trouver vraiment à la fin, car comme vous faites des accès comme ws.Range("C1").Value = "Total Effectif" la macro boucle sur elle même puisque vous modifiez une cellule.
 

Pièces jointes

- 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 Probléme VBA
Réponses
8
Affichages
213
Retour