Insertion automatique de ligne sur une plage de cellule

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

M

Marco92

Guest
Bonjour, je souhaite faire un tableau avec :

en haut, en abscisse : des activitées
sur le coté gauche, en ordonnée: les dates

et je remplis ce tableau avec les noms des participants.

Je voudrais qu'une nouvelle ligne s'insère automatiquement dés qu'une ligne est remplie avec 1 ou plusieurs participants, afin de pouvoir en ajouter en dessous.

Je joint un fichier excel avec des explication, pour que ça soit plus concret 🙂

Merci 😉
 

Pièces jointes

Re : Insertion automatique de ligne sur une plage de cellule

Bonjour marco, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle Change ci-dessous :
Code:
Private test As Boolean 'déclare la variable test


Private Sub Worksheet_Change(ByVal Target As Range)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)

If test = True Then Exit Sub 'si test est vraie, sort de la procédure
dl = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row 'définit la dernière ligne dl
Set pl = Range("B9:I" & dl) 'définit la plage pl
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage pl, sort de la procédure
If Application.WorksheetFunction.CountA(Application.Intersect(Rows(Target.Row), pl)) = 1 Then 'condition : si le nombre de valeurs dans la ligne du changement est égal à 1
    test = True 'définit la variable test (évite la boucle à chaque changement)
    Rows(Target.Row).Copy 'copie la ligne de la celule editée
    Cells(Target.Row + 1, 1).Insert shift = xlDown 'l'insère une ligne en dessous
    Range(Cells(Target.Row + 1, 1), Cells(Target.Row + 1, 9)).ClearContents 'supprimme les données de la ligne insérée
    test = False 'redéfinit la variable test
End If 'fin de la condition
End Sub
Le fichier :
 

Pièces jointes

Re : Insertion automatique de ligne sur une plage de cellule

Merci beaucoup Robert pour l'aide !!

Je me demandais si il étais possible de conserver la date sur la gauche à chaque insertion automatique ?

Merci encore 🙂
 
Re : Insertion automatique de ligne sur une plage de cellule

Bonjour Marco, bonjour le forum,

dans la ligne :
Range(Cells(Target.Row + 1, 1), Cells(Target.Row + 1, 9)).ClearContents 'supprimme les données de la ligne insérée
Remplace 1 par 2 :
Range(Cells(Target.Row + 1, 2), Cells(Target.Row + 1, 9)).ClearContents 'supprimme les données de la ligne insérée

Le fichier :
 

Pièces jointes

Re : Insertion automatique de ligne sur une plage de cellule

Bonjour 😀

J'ai voulu ajouter des mises en forme conditionnelle en utilisant une macro, tout fonctionne bien sauf pour les nouvelles lignes ajoutées qui ne tiennent pas compte des mises en forme.

J'ai utilisé cette macro:

Excel - Mises en forme conditionnelles illimitées | CommentCaMarche

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim i As Integer, j As Long, Mfc As FormatCondition, c As Range, Ws1 As Worksheet
    On Error GoTo fin ' en cas de mauvaise manipulation, ça plante sur l'ordre suivant
    Application.EnableEvents = False
    Set Ws1 = Sheets("MFC")
    For i = 1 To Target.FormatConditions.Count
        Set Mfc = Target.FormatConditions(i)
        If UCase(Left(Mfc.Formula1, 7)) = "=MA_MFC" Then
            Ws1.Range("A1").Value = Target.Value
            Set c = Nothing
            For j = 2 To Ws1.Range("A65536").End(xlUp).Row
                If Ws1.Range("A" & j) = True Then
                    Set c = Ws1.Range("A" & j)
                    Exit For
                End If
            Next j
            If c Is Nothing Then Set c = Ws1.Range("A1")
            c.Copy
            Target.PasteSpecial (xlPasteFormats)
            Application.CutCopyMode = False
        End If
    Next i
    Application.EnableEvents = True
fin:
    On Error GoTo 0
End Sub

Merci d'avance 😱
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour