Microsoft 365 Problème de tableau structuré

  • Initiateur de la discussion Initiateur de la discussion CortoXls
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CortoXls

XLDnaute Junior
Bonjour à tous
Dans un fichier j'ai un tableau structuré dans chaque onglet soit 12 tableaux nommés Tableau1 à Tableau12
Les onglets sont Feuil1 à Feuil12
Les tableaux contiennent des listes de validation
Les tableaux font 400 lignes
Si j'écris dans la 401 ème ligne, le tableau ne s'agrandit pas et les listes déroulantes ne sont pas reprises.
Est-ce normal ?
 
La feuille est protégée mais pas la partie saisie du tableau.
Il y a effectivement des lignes vides
En enlevant la protection et en supprimant les lignes vides ça fonctionne.
Comment pouvoir protéger la feuille et permettre le fonctionnement ?
Je veux interdire la suppression ou le rajout de colonne, l'accès aux cellules verrouillées, la mise en forme des colonnes, le tri, l'utilisation de tcd,la modification des objets et des scénari
 
Dernière édition:
Bonjour à tous

Sur un TS pour ajouter ou supprimer 1 ligne il faut :
1) Déproteger la feuille ==> Sheets("Feuil1").Unprotect (Nom de feuille à adapter)
2) Faire l'ajout de ligne du TS ==> Sheets("Feuil1").ListObjects("Tableau1").ListRows.Add etc...... (Nom du tableau à adapter)
3) Reproteger la feuille ==> Sheets("Feuil1").Protect

Merci de ton retour
 
Bonjour à tous

Sur un TS pour ajouter ou supprimer 1 ligne il faut :
1) Déproteger la feuille ==> Sheets("Feuil1").Unprotect (Nom de feuille à adapter)
2) Faire l'ajout de ligne du TS ==> Sheets("Feuil1").ListObjects("Tableau1").ListRows.Add etc...... (Nom du tableau à adapter)
3) Reproteger la feuille ==> Sheets("Feuil1").Protect

Merci de ton retour
Je ne souhaite pas que la feuille soit déverrouillée par l'utilisateur...
J'imaginais un truc du genre :
Au départ le TS a déjà une ligne avec les Listes déroulantes.
Je saisi une valeur dans une cellule de cette ligne
Une macro se déclenche
La feuille est déverouillée
Un caractère du type ' est inséré dans l cellule de la 1ère colonne de la ligne suivante donc le tableau s'agrandit et on revient sur la cellule précédente sans oublier de verrouiller la feuille...
Bon il y a du boulot.
 
Je ne souhaite pas que la feuille soit déverrouillée par l'utilisateur...
J'imaginais un truc du genre :
Au départ le TS a déjà une ligne avec les Listes déroulantes.
Je saisi une valeur dans une cellule de cette ligne
Une macro se déclenche
La feuille est déverouillée
Un caractère du type ' est inséré dans l cellule de la 1ère colonne de la ligne suivante donc le tableau s'agrandit et on revient sur la cellule précédente sans oublier de verrouiller la feuille...
Bon il y a du boulot.
Alors j'avance un peu
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) 'Active la dernière cellule renseignée de la page activée

Dim FActiv As Worksheet
Dim j, Lign, Lign2 As Integer
Set FActiv = ActiveSheet

Application.DisplayFormulaBar = False
Application.ScreenUpdating = False

FActiv.Unprotect
Lign = Range("A:k").Find("*", , , , xlByRows, xlPrevious).Row ' + 1 'Active la dernière ligne +1 de la 1ère colonne
Lign2 = Lign + 1
   
    With Range("A" & Lign2) 'je crée une ligne contenant les listes déroulantes
        .Select
        .Value = "'"
    End With
....
J'agrandi bien le TS
ça ne répond pas complètement à ce que je veux mais ...
Je continue de creuser et si vous avez des idées...
Je pense qu'il va falloir que je passe par le worksheet_change
 
Bonjour,

Lign = Range("A:k").Find("*", , , , xlByRows, xlPrevious).Row ' + 1 'Active la dernière ligne +1 de la 1ère colonne
Lign2 = Lign + 1

With Range("A" & Lign2) 'je crée une ligne contenant les listes déroulantes
.Select
.Value = "'"
End With
😱

Tu utilises un TS dans ta feuille, alors pourquoi ne pas utiliser ses propriétés dans ton code ???
D'autant plus que Phil69970 t'a déjà donné le code ad hoc.
 
Je regarde ça demain ou au plus tard lundi et je te tiens au courant !
Merci beaucoup pour ton aide !
re,
Finalement ça me démangeait
donc voici le code qui fonctionne (sans doute à améliorer dans son écriture)
VB:
Sub EvolTbl()

Dim TblMois  As ListObject
Dim CellChange As Range      
Dim Col, Lign As Integer

Set TblMois = ActiveSheet.ListObjects(1)
Set CellChange = ActiveCell              
Lign = CellChange.Row
Col = CellChange.Column

Application.ScreenUpdating = False
ActiveSheet.Unprotect

If Not Intersect(CellChange, [TblMois].ListColumns("OK").DataBodyRange) Is Nothing Then Exit Sub 'si le double-click est fait dans la colonne "OK" on quitte la procédure

Application.EnableEvents = False
  With Range("A" & Lign + 1)
        .Select
        .Value = "'"
    End With
CellChange.Select

Application.EnableEvents = True
Application.ScreenUpdating = True

Call ProtectFeuil

End Sub
avec un appel de la procédure dans toutes les feuilles concernées.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Call EvolTbl
End Sub
Je vais torturer un peu mon fichier pour être sûr du fonctionnement et de l'absence de bug avec les autres fonctionnalités.
Merci d'avance pour vos commentaires et merci pour vos solutions proposées qui m'ont guidé !!!
 
Dernière édition:
Il y a plusieurs choses bizarres, je trouve (sauf erreur de compréhension de ton code de ma part) :

- Tu commences par déprotéger la feuille et si on est dans la colonne "OK" tu sorts directement de la macro...

- Maintenant on est donc n'importe où dans la feuille, sauf dans la colonne "OK" du TS, et tu inscris une apostrophe dans la colonne A de la feuille, sous la ligne où on se trouve.
Quel est le but d'aller écrire cette apostrophe ?


[edit]
Ah, tu as modifié ton message, du coup ça amène une autre question. 😉
- Dans EvolTbl tu parles de double-clic, mais EvolTbl est appelée dans Worksheet_Change.

Mais bon, sans classeur on cause un peu dans le vide. 🙁
[/edit]
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour