XL 2013 Rallonger un tableau même verouillé

lestoiles1

XLDnaute Occasionnel
Bonjour,

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.

Merci
Lestoiles
 

Pièces jointes

  • test vba protect-3.xlsm
    41.6 KB · Affichages: 11
Solution
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.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lestoiles,
Peut être simplement avec :
VB:
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.
 

Pièces jointes

  • test vba protect-3 (2).xlsm
    31.9 KB · Affichages: 2

lestoiles1

XLDnaute Occasionnel
Bonjour Lestoiles,
Peut être simplement avec :
VB:
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.
Merci pour ta réponse , mais lorsque je remplis quelque chose dans la colonne size (S,M,L) je macro ne marche pas.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

Pièces jointes

  • test vba protect-3 (3).xlsm
    32.7 KB · Affichages: 2

lestoiles1

XLDnaute Occasionnel
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.
Excusez-moi Sylvanu, j'ai inseré un code dans la "sheet2", et lorsque je clique sur validate ca ne marche pas.
 

Pièces jointes

  • test vba protect-5.xlsm
    41.7 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
En faisant cette ligne, cela détruit les formules présentes.
VB:
Range("A" & DerLigT & ":T" & DerLigT) = Range("A" & DerLigT & ":T" & DerLigT).Value
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.
 

Pièces jointes

  • test vba protect-5 (2).xlsm
    35.3 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour à tous,

Je reviens sur le post #1 avec cette macro :
VB:
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.

A+
 

Pièces jointes

  • test vba protect-3.xlsm
    31.6 KB · Affichages: 3

lestoiles1

XLDnaute Occasionnel
Bonjour à tous,

Je reviens sur le post #1 avec cette macro :
VB:
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.

A+
Bonjour, j'ai besoin du bouton validate car on doit encore remplir le "size " (s,m,l,xl...) avant de verouiller les cellules
 

lestoiles1

XLDnaute Occasionnel
Bonjour,
En faisant cette ligne, cela détruit les formules présentes.
VB:
Range("A" & DerLigT & ":T" & DerLigT) = Range("A" & DerLigT & ":T" & DerLigT).Value
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.
Ca ne marche pas, j'ai rempli la cellule A4 , puis j'ai cliqué sur validate, ca donne ça (PJ)
 

Pièces jointes

  • test vba protect-5 (2).xlsm
    42.1 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

Pièces jointes

  • test vba protect-5 (2) (3).xlsm
    34 KB · Affichages: 1

Statistiques des forums

Discussions
314 626
Messages
2 111 291
Membres
111 092
dernier inscrit
ThomasU3