J'ai bidouiller ces quelques lignes de code trouvé sur le net pour
automatiser à l'insertion de ligne dans Excel. Je souhait avoir la
reprise des valeurs positionnées juste au dessus (cellule Ax et Bx)ainsi
qu'une formule de calcul en cellule Ix.
Pouvez vous me donner votre avis et avez une solution pour améliorer la
procédure ou la "sécuriser" d'avantage.
Cordialement
Merci
Esox
Private Sub Worksheet_Change(ByVal Target As Range)
lLl = Target.Row
'Insertion d'une ligne
If Range("a" & lLl).Value <> "" Then
Exit Sub
Else
lLl = Target.Row
Range("a" & lLl & ":b" & lLl).Value = Range("a" & lLl - 1 & ":b" &
lLl - 1).Value
Range("i" & lLl - 1).Select
Selection.AutoFill Destination:=Range("I" & lLl - 1 & ":I" & lLl +
1), Type:=xlFillDefault
Rows(lLl & ":" & lLl).Select
End If
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour. Dans un module, mets au début :
Public Res As String
Dans le code de ta feuille :
Private Sub Worksheet_Change(ByVal Target As Range) 'Insertion d'une ligne lLl = Target.Row If Range("a" & lLl).Value <> "" Then Exit Sub If Target.Count <> 256 Or Target.Rows.Count <> 1 Then Exit Sub If ActiveSheet.UsedRange.Rows.Count <> Res + 1 Then Exit Sub Application.EnableEvents = False Range("a" & lLl & ":b" & lLl).Value = Range("a" & lLl - 1 & ":b" & lLl - 1).Value Range("i" & lLl - 1).Select Selection.AutoFill Destination:=Range("I" & lLl - 1 & ":I" & lLl + 1), Type:=xlFillDefault Rows(lLl & ":" & lLl).Select Res = ActiveSheet.UsedRange.Rows.Count Application.EnableEvents = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Res = ActiveSheet.UsedRange.Rows.Count End Sub
Si tu utilises XL2007, pense à remplacer 256 par 16384. La macro n'est valable que pour une insertion manuelle de ligne, pas pour une insertion par macro. Cordialement. Daniel
Bonjour,
J'ai bidouiller ces quelques lignes de code trouvé sur le net pour automatiser à l'insertion de ligne dans Excel. Je souhait avoir la reprise des valeurs positionnées juste au dessus (cellule Ax et Bx)ainsi qu'une formule de calcul en cellule Ix. Pouvez vous me donner votre avis et avez une solution pour améliorer la procédure ou la "sécuriser" d'avantage. Cordialement Merci Esox
Private Sub Worksheet_Change(ByVal Target As Range) lLl = Target.Row 'Insertion d'une ligne If Range("a" & lLl).Value <> "" Then Exit Sub Else lLl = Target.Row Range("a" & lLl & ":b" & lLl).Value = Range("a" & lLl - 1 & ":b" & lLl - 1).Value Range("i" & lLl - 1).Select Selection.AutoFill Destination:=Range("I" & lLl - 1 & ":I" & lLl + 1), Type:=xlFillDefault Rows(lLl & ":" & lLl).Select End If End Sub
Bonjour.
Dans un module, mets au début :
Public Res As String
Dans le code de ta feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
'Insertion d'une ligne
lLl = Target.Row
If Range("a" & lLl).Value <> "" Then Exit Sub
If Target.Count <> 256 Or Target.Rows.Count <> 1 Then Exit Sub
If ActiveSheet.UsedRange.Rows.Count <> Res + 1 Then Exit Sub
Application.EnableEvents = False
Range("a" & lLl & ":b" & lLl).Value = Range("a" & lLl - 1 & ":b" & lLl
- 1).Value
Range("i" & lLl - 1).Select
Selection.AutoFill Destination:=Range("I" & lLl - 1 & ":I" & lLl + 1),
Type:=xlFillDefault
Rows(lLl & ":" & lLl).Select
Res = ActiveSheet.UsedRange.Rows.Count
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Res = ActiveSheet.UsedRange.Rows.Count
End Sub
Si tu utilises XL2007, pense à remplacer 256 par 16384. La macro n'est
valable que pour une insertion manuelle de ligne, pas pour une
insertion par macro.
Cordialement.
Daniel
Bonjour,
J'ai bidouiller ces quelques lignes de code trouvé sur le net pour
automatiser à l'insertion de ligne dans Excel. Je souhait avoir la reprise
des valeurs positionnées juste au dessus (cellule Ax et Bx)ainsi qu'une
formule de calcul en cellule Ix.
Pouvez vous me donner votre avis et avez une solution pour améliorer la
procédure ou la "sécuriser" d'avantage.
Cordialement
Merci
Esox
Private Sub Worksheet_Change(ByVal Target As Range)
lLl = Target.Row
'Insertion d'une ligne
If Range("a" & lLl).Value <> "" Then
Exit Sub
Else
lLl = Target.Row
Range("a" & lLl & ":b" & lLl).Value = Range("a" & lLl - 1 & ":b" & lLl -
1).Value
Range("i" & lLl - 1).Select
Selection.AutoFill Destination:=Range("I" & lLl - 1 & ":I" & lLl + 1),
Type:=xlFillDefault
Rows(lLl & ":" & lLl).Select
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'Insertion d'une ligne lLl = Target.Row If Range("a" & lLl).Value <> "" Then Exit Sub If Target.Count <> 256 Or Target.Rows.Count <> 1 Then Exit Sub If ActiveSheet.UsedRange.Rows.Count <> Res + 1 Then Exit Sub Application.EnableEvents = False Range("a" & lLl & ":b" & lLl).Value = Range("a" & lLl - 1 & ":b" & lLl - 1).Value Range("i" & lLl - 1).Select Selection.AutoFill Destination:=Range("I" & lLl - 1 & ":I" & lLl + 1), Type:=xlFillDefault Rows(lLl & ":" & lLl).Select Res = ActiveSheet.UsedRange.Rows.Count Application.EnableEvents = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Res = ActiveSheet.UsedRange.Rows.Count End Sub
Si tu utilises XL2007, pense à remplacer 256 par 16384. La macro n'est valable que pour une insertion manuelle de ligne, pas pour une insertion par macro. Cordialement. Daniel
Bonjour,
J'ai bidouiller ces quelques lignes de code trouvé sur le net pour automatiser à l'insertion de ligne dans Excel. Je souhait avoir la reprise des valeurs positionnées juste au dessus (cellule Ax et Bx)ainsi qu'une formule de calcul en cellule Ix. Pouvez vous me donner votre avis et avez une solution pour améliorer la procédure ou la "sécuriser" d'avantage. Cordialement Merci Esox
Private Sub Worksheet_Change(ByVal Target As Range) lLl = Target.Row 'Insertion d'une ligne If Range("a" & lLl).Value <> "" Then Exit Sub Else lLl = Target.Row Range("a" & lLl & ":b" & lLl).Value = Range("a" & lLl - 1 & ":b" & lLl - 1).Value Range("i" & lLl - 1).Select Selection.AutoFill Destination:=Range("I" & lLl - 1 & ":I" & lLl + 1), Type:=xlFillDefault Rows(lLl & ":" & lLl).Select End If End Sub