Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimisation du code : votre avis

1 réponse
Avatar
Esox38
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

1 réponse

Avatar
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