Insertion auto ligne avec recopie incrémentée

mvcs

XLDnaute Nouveau
Bonjour et merci d'avance aux VBAistes confirmés qui pourront m'aider.

J'ai un tableau avec des noms, des valeurs et des formules avec à la fin un total sur une colonne.
Je voudrais qu'en ajoutant un nom, une ligne soit insérée avec les valeurs et formules incrémentées de la ligne au dessus, tout en décalant le total en bas.
Voir ce que ça donne ça dans le fichier joint.

J'ai déjà pensé mettre quelquechose dans
Private Sub Worksheet_Change(ByVal Target As Range)
mais je sais pas trop comment faire pour qu'une macro du style :
Selection.AutoFill Destination:=Rows("3:4"), Type:=xlFillDefault
se déclenche quand j'entre la donnée dans la cellule
Je trébuche aussi sur les codes, comme par exemple que faut-il mettre à la place de ("3:4") pour qu'il comprenne qu'il faut incrémenter d'une ligne quelque soit la ligne où on se trouve ?

Voilà et merci
 

Pièces jointes

  • ExempleInsertionLigne.xls
    41 KB · Affichages: 91

Hippolite

XLDnaute Accro
Re : Insertion auto ligne avec recopie incrémentée

Bonjour,
J'ai déjà pensé mettre quelquechose dans
Private Sub Worksheet_Change(ByVal Target As Range)
mais je sais pas trop comment faire pour qu'une macro du style :
Selection.AutoFill Destination:=Rows("3:4"), Type:=xlFillDefault
se déclenche quand j'entre la donnée dans la cellule
Utlise
Code:
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A:A"), Target) is Nothing then
A+
 

Hippolite

XLDnaute Accro
Re : Insertion auto ligne avec recopie incrémentée

Re,
Non testé, je n'ai pas Excel sous la main :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("A:A"), Target) Is Nothing Then

        If Target.Cells.Count = 1 Then
            Application.EnableEvents = False
            'insertion ligne
            Target.Offset(0, 1).Resize(1, 2).Insert Shift:=xlShiftDown
            'incrémentation col B:C
            Target.Offset(-1, 1).Resize(1, 2).AutoFill _
                    Destination:=Target.Offset(-1, 1).Resize(2, 2), _
                    Type:=xlFillDefault
            'Total
            Target.Offset(1, 2).Formula = "=Sum(C1:C" & Target.Row & ")"
            Application.EnableEvents = True
        End If
    End If
End Sub
A+
 
Dernière édition:

mvcs

XLDnaute Nouveau
Re : Insertion auto ligne avec recopie incrémentée

Bonsoir Hippolite et merci de t'être penché sur mon cas,
J'ai testé mais ça plante à Target .Insert.
Il semblerait qu'il insert la ligne en boucle à chaque fois que la feuille change.
@+
 
Dernière édition:

mvcs

XLDnaute Nouveau
Re : Insertion auto ligne avec recopie incrémentée

Bonsoir Hippolite et merci de t'être penché sur mon cas,
J'ai testé mais ça plante à Target .Insert.
Il semblerait qu'il insert la ligne en boucle à chaque fois que la feuille change.
@+
 

Hippolite

XLDnaute Accro
Re : Insertion auto ligne avec recopie incrémentée

Re,
bonne analyse, la création de la ligne appelle la macro événementielle, j'aurais dû y penser.
J'ai modifié le code avec Application.EnableEvents = False pour la neutraliser pendant l'ajout de la ligne.
A+

Nota : il y a peut-être d'autres coquilles, je regarderai demain quand j'aurai récupéré mon portable.
 
Dernière édition:

mvcs

XLDnaute Nouveau
Re : Insertion auto ligne avec recopie incrémentée

Super, ça marche mieux.
Je l'ai un peu adapté car finalement ma ligne total je l'ai mise ailleurs pour qu'elle reste visible en haut du tableau avec un grand nombre de ligne et un volet figé.
Donc il n'y a plus besoin de la ligne pour la formule SUM ...
Merci encore pour ton aide précieuse.
@+
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL