Mon tableau est verouillé et il ne s'éttend pas.
Mon but c'est en cliquant sur validate, la ligne se verouille automatiquement , mais malgré cela, lorsque j'ajoute une chiffre dans la colonne A, le tableau ne s'ettend plus.
Pourquoi spécifiquement SML ?
Ci dessous une macro qui remet dans le tableau toute cellule modifiée de A à T.
VB:
Sub Button1_Click()
Dim DerLig As Integer, DerLigT As Integer
'Il faut d'abord déprotéger toutes les cellules de la feuille par le menu Accueil--> Format--> Format de cellule
ActiveSheet.Unprotect
DerLigT = 2 + [Table1].Rows.Count ' Première ligne libre après le tableau
DerLig = Range("A" & ActiveSheet.Cells.Rows.Count).End(xlUp).Row
Range("A" & DerLigT & ":T" & DerLigT) = Range("A" & DerLigT & ":T" & DerLigT).Value
Range("A1:T" & DerLig).Locked = True
ActiveSheet.Protect
End Sub
Sinon soyez plus précis sur votre demande car c'est assez flou.
Sub Button1_Click()
Dim DerLig As Integer
'Il faut d'abord déprotéger toutes les cellules de la feuille par le menu Accueil--> Format--> Format de cellule
ActiveSheet.Unprotect
DerLig = Range("A" & ActiveSheet.Cells.Rows.Count).End(xlUp).Row
Range("A" & DerLig) = Range("A" & DerLig).Value
Range("A1:T" & DerLig).Locked = True
ActiveSheet.Protect
End Sub
Un copier coller de la dernière cellule permet de ré intégrer cette ligne dans le tableau.
Sub Button1_Click()
Dim DerLig As Integer
'Il faut d'abord déprotéger toutes les cellules de la feuille par le menu Accueil--> Format--> Format de cellule
ActiveSheet.Unprotect
DerLig = Range("A" & ActiveSheet.Cells.Rows.Count).End(xlUp).Row
Range("A" & DerLig) = Range("A" & DerLig).Value
Range("A1:T" & DerLig).Locked = True
ActiveSheet.Protect
End Sub
Un copier coller de la dernière cellule permet de ré intégrer cette ligne dans le tableau.
Pourquoi spécifiquement SML ?
Ci dessous une macro qui remet dans le tableau toute cellule modifiée de A à T.
VB:
Sub Button1_Click()
Dim DerLig As Integer, DerLigT As Integer
'Il faut d'abord déprotéger toutes les cellules de la feuille par le menu Accueil--> Format--> Format de cellule
ActiveSheet.Unprotect
DerLigT = 2 + [Table1].Rows.Count ' Première ligne libre après le tableau
DerLig = Range("A" & ActiveSheet.Cells.Rows.Count).End(xlUp).Row
Range("A" & DerLigT & ":T" & DerLigT) = Range("A" & DerLigT & ":T" & DerLigT).Value
Range("A1:T" & DerLig).Locked = True
ActiveSheet.Protect
End Sub
Sinon soyez plus précis sur votre demande car c'est assez flou.
Bonjour je ne veux pas de supreesssion ou d'addition de ligne je veux juste qu'a chaque fois que je clik sur validate , la ligne qui contient des donnée soit deverrouillé. Sylvanu a trouver la solution , merci quand meme pour votre réponse
Pourquoi spécifiquement SML ?
Ci dessous une macro qui remet dans le tableau toute cellule modifiée de A à T.
VB:
Sub Button1_Click()
Dim DerLig As Integer, DerLigT As Integer
'Il faut d'abord déprotéger toutes les cellules de la feuille par le menu Accueil--> Format--> Format de cellule
ActiveSheet.Unprotect
DerLigT = 2 + [Table1].Rows.Count ' Première ligne libre après le tableau
DerLig = Range("A" & ActiveSheet.Cells.Rows.Count).End(xlUp).Row
Range("A" & DerLigT & ":T" & DerLigT) = Range("A" & DerLigT & ":T" & DerLigT).Value
Range("A1:T" & DerLig).Locked = True
ActiveSheet.Protect
End Sub
Sinon soyez plus précis sur votre demande car c'est assez flou.
Testez cette PJ où j'ai repris la méthode, je copie la dernière ligne, je crée une ligne supplémentaire dans le tableau ainsi les formules sont dupliquées puis je colle les valeurs.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h&
Application.EnableEvents = False 'désactive les évènements
Unprotect
With [Table1].ListObject.Range 'tableau structuré
h = UsedRange.Rows.Count + UsedRange.Row - .Row
.ListObject.Resize .Resize(h) 'redimensionne le tableau
If h > 2 Then .Rows(2).AutoFill .Rows(2).Resize(h - 1), xlFillFormats 'copie les formats
End With
Protect
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche automatiquement, le bouton VALIDATE n'est pas nécessaire.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h&
Application.EnableEvents = False 'désactive les évènements
Unprotect
With [Table1].ListObject.Range 'tableau structuré
h = UsedRange.Rows.Count + UsedRange.Row - .Row
.ListObject.Resize .Resize(h) 'redimensionne le tableau
If h > 2 Then .Rows(2).AutoFill .Rows(2).Resize(h - 1), xlFillFormats 'copie les formats
End With
Protect
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche automatiquement, le bouton VALIDATE n'est pas nécessaire.
Testez cette PJ où j'ai repris la méthode, je copie la dernière ligne, je crée une ligne supplémentaire dans le tableau ainsi les formules sont dupliquées puis je colle les valeurs.
Bonjour,
J'ai retesté sur mon fichier et c'est ok, sur le votre ko. Je pense qu'il y a interaction avec la macro worksheet_change.
Dans cette PJ je l'ai supprimée car elle ne sert à rien, la date est mise lors de l'appui sur Validate comme pour les autres cellules.