1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'CORRECTION DU BUG EXCEL :
'Ajout automatique d'une ligne en fin de tableau sur feuille protégée
'Déclaration des variables du Tb1
Dim DebLg1 As Long, DebCol1 As Long, DerLg1 As Long, DerCol1 As Long
Dim CelAct1 As Range, Plg1 As Range, NewLg1 As Range
'Affectation des variables
DebLg1 = Range("Tableau5").Row '1ère ligne des données
DebCol1 = Range("Tableau5").Column '1ère colonne
DerLg1 = Range("Tableau5").Rows.Count + 3 'Nb Lg avant Tb
DerCol1 = Range("Tableau5").Columns.Count 'Dernière colonne du Tb
With ActiveSheet 'avec la feuille active
'Déclaration des variables du Tb1
Set CelAct1 = Cells(ActiveCell.Row, ActiveCell.Column) 'Ad de la cell active
Set Plg1 = Range(Cells(DerLg1, DebCol1), Cells(DerLg1, DerCol1)) 'Ad de la Dern. Lg
'Si la cellule active se trouve en dernière ligne du Tb
If Not Application.Intersect(CelAct1, Plg1) Is Nothing Then
.Unprotect Password:="Feuil" 'Déprotection
' on ajoute une ligne au Tb
.ListObjects("Tableau5").ListRows.Add
'Autre correction à faire, car sinon les lignes ajoutées n'ont plus l'alternance de couleurs
'Supprime les MFC existantes
With Range("Tableau5[#Data]") 'Dans la partie des données
.FormatConditions.Delete
'ajout des mise en forme conditionnelle une ligne sur 2
.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE();2)=1" 'ligne impair
.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE();2)=0" 'ligne pair
'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
.FormatConditions(1).Interior.Color = RGB(220, 230, 241) 'bleu ciel
.FormatConditions(2).Interior.Color = RGB(255, 255, 255) 'blanc
End With
'Protection avec Autorisation : Format Lignes, Insérer Liens Hyp, Tri, Filtre, Modif Objets
.Protect Password:="Feuil", DrawingObjects:=False, contents:=True, Scenarios:= _
True, AllowFormattingRows:=True, AllowInsertingHyperlinks:=True, _
AllowSorting:=True, AllowFiltering:=True
End If
End With
End Sub |
Partager