bonjour a vous
dans ce code qui fonctionne très bien tel qu'il est car il cherche la dernière ligne a partir du bas
Public Sub Supprimer_Ligne()
Dim lastline As Long
lastline = Range("A" & ActiveSheet.Rows.Count).End(xlUp)(1).Row
If lastline < Range("A10").Row Then
lastline = Range("A10").Row + 1
End If
If (Selection.Row <= Range("A10").Row + 1) Or (Selection.Row > lastline) Then
MsgBox "Sélection hors plage Article", vbInformation + vbOKOnly, "Suppression annulée" ' Effectue une action.quitter"
Exit Sub
End If
Dim Msg, Style, Title
If MsgBox("êtes vous sur de vouloir supprimer les lignes sélectionnées ?", vbOKCancel + vbDefaultButton2, "attention a la suppression") = vbOK Then ' Définit le message.
'récupère le n° de la ligne
'nomme la variable "cel1" avec la référence de la cellule , "b4" par exemple
Dim cel1 As String
Dim cel2 As String
cel1 = "A" & Selection.Row
cel2 = "H" & Selection.Rows.Count + Selection.Row - 1
'nomme "cel1" la cellule, "b4" par exemple
'sélectionne les cellules à supprimer (exemple b4:P4) => et remonte les cellules d'1 cran cad b5.P65536 en b4.h65535
'et ajoute la 65536 vide, mais attention à cette formule, car si il y a des donnees à droite ou à gauche, en a4 ou
'au delà de P4, dans notre exemple, elles ne bougent pas
Range(Range(cel1), Range(cel2)).Delete Shift:=xlUp
lastline = Range("A" & ActiveSheet.Rows.Count).End(xlUp)(1).Row
If lastline < Range("A10").Row Then
lastline = Range("A10").Row + 1
End If
ActiveWindow.ScrollRow = IIf((lastline - NB_LIGNE_ARTICLE_FIGE) > Range("A10").Row, lastline - NB_LIGNE_ARTICLE_FIGE, Range("A10").Row + 1)
Range("D" & Selection.Row - 1).Select
If lastline > Range("A10").Row + 1 Then
Range("C" & lastline & ":M" & lastline).Borders(xlEdgeBottom).LineStyle = xlContinuous
End If
Else ' L'utilisateur a choisi Non.
MsgBox "suppression annulée" ' Effectue une action.quitter"
End If
End Sub
je voudrais que les lignes concernées soient comprises entre la 10ème et la 43 ème et que dans le même tempselles n'efface pas les formules qui sont dans les colonnes J et K
j'ai bien essayer avec la 1ère ligne
lastline = Range("A43")' & ActiveSheet.Rows.Count).End(xlUp)(1).Row
mais cela créer un bug a la modification
Pascal