Optimisation du code : votre avis

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #18759371
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 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


Publicité
Poster une réponse
Anonyme