Créer un extrait de tableau dans une autre feuille qui se modifie tout seul

bonjour,

La feuille 1 correspond à mon tableau principal. Pour être plus précis, il est constitué de plusieurs "sous tableaux" à la suite (sélection + mettre sous forme de tableau) qui me permet de mettre des menus déroulants sur chaque "sous tableau".

je souhaiterai, sur la feuille 2, mettre une copie exacte du 1er tableau mais aussi, que lorsque j'ajoute une ligne sur le tableau "principal" (feuille 1), cette ligne s'ajoute automatiquement sur la copie (feuille 2).

et faire ça sur l'ensemble des tableaux de la feuille 1.

en gros , avoir un tableau principal sur une feuille, avoir x feuilles correspondant à x "sous tableaux". Ne travailler que sur le tableau principal, et que les feuilles correspondants aux sous tableaux se changent automatiquement (ajout ligne, d'informations etc...).

j'ai fait des recherches sur le net, fait des essais non concluant, je me suis lancé sur le tableau dynamique, mais je n'y arrive pas.

donc, première question, avant l'envoi de fichier, avec quelle technique je peux m'en sortir?

merci beaucoup

Bonsoir Goliath, bonsoir le forum,

Pour t'en sortir de manière efficace il faudrait qu'à chaque changement dans l'onglet principal, la macro recopie tout dans l'onglet secondaire. Cela va ralentir l'exécution du code. Mais si on avait le fichier sous les yeux on pourrait t'en dire plus...

ok, je refais un fichier plus simple, et je te donne ça

voici un extrait de mon tableau

j'ajoute régulièrement des lignes

mon but final est de supprimer les filtres du tableau principal (menus déroulants + colonnes filtres) pour avoir un tableau propre et clair et de se servir que des "sous tableaux" pour les menus déroulants et colonnes filtres

Bonjour Goliath, bonjour le forum,

Peut-être comme ça.

Private Sub Worksheet_Deactivate()
Dim TP1 As ListObject 'déclare la variable TP1 (Tableau Principal 1)
Dim TP2 As ListObject 'déclare la variable TP2 (Tableau Principal 2)
Dim TP3 As ListObject 'déclare la variable TP3 (Tableau Principal 3)
Dim ST1 As ListObject 'déclare la variable ST1 (Sous Tableau1)
Dim ST2 As ListObject 'déclare la variable ST2 (sous Tableau 2)
Dim ST3 As ListObject 'déclare la variable St3 (sous Tableau 3)

Set TP1 = Worksheets("tableau principal").ListObjects("Tableau4") 'définit le tableau TP1
Set TP2 = Worksheets("tableau principal").ListObjects("Tableau2") 'définit le tableau TP2
Set TP3 = Worksheets("tableau principal").ListObjects("Tableau5") 'définit le tableau TP3
Set ST1 = Worksheets("sous tableau 1").ListObjects("Tableau42") 'définit le tableau ST1
Set ST2 = Worksheets("sous tableau 2").ListObjects("Tableau511") 'définit le tableau ST2
Set ST3 = Worksheets("sous tableau 3").ListObjects("Tableau29") 'définit le tableau ST3
If ST1.ListRows.Count > 1 Then ST1.DataBodyRange.Delete 'si ST1 contient au moins une ligne, efface les données de ST1
TP1.Range.Copy ST1.Range 'récupère les données de TP1 dans ST1
If ST2.ListRows.Count > 1 Then ST2.DataBodyRange.Delete 'si ST2 contient au moins une ligne, efface les données de ST2
TP2.Range.Copy ST2.Range 'récupère les données de TP2 dans ST2
If ST3.ListRows.Count > 1 Then ST3.DataBodyRange.Delete 'si ST3 contient au moins une ligne, efface les données de ST3
TP3.Range.Copy ST3.Range 'récupère les données de TP3 dans ST3
End Sub

À mettre dans le composant worksheet Feuil1 (tableau pricipal). Ça agira chaque fois que tu sortiras de cet onglet pour en sélectionner un autre...

OULALA!!!!

je fais des essais ce week end, et je reviens vers toi, car là je vais avoir besoin de mon ami internet pour en faire quelque chose

avec un merci bien évidement ;)

bonjour,

ThauThème: j'ai passé des heures à comprendre, mettre en oeuvre ta formule magique mais je n'arrive pas à la faire fonctionner.

A vrai dire, je ne suis pas du tout familiarisé avec ces formules, je ne suis qu'un utilisateur de excel en mode "classic". (des cases et des formules dans des cases)

Mais j'ai quand même cherché, j'ai travaillé sur le fichier que j'avais joint, et voici ce que j'ai fait (tu y trouveras peut-être l'erreur):

. feuille "tableau principal", clic droit, visualiser le code

. dans la fenêtre qui s'est ouverte, j'ai collé ta formule, je n'ai rien touché d'autre, j'enregistre et je ferme,

. de retour dans la feuille "tableau principal", je passe à la feuille "sous tableau 1" et là, message erreur: "erreur d'exécution '9': l'indice n'appartient pas à la sélection"

. idem lorsque je passe vers les autres feuilles.

je rencontre donc deux problèmes:

je ne sais pas ce que je fais, donc je ne sais pas réparer ce bug, même si je suppose que c'est qu'une histoire de coche, de point ou de lettre mal renseignés.

mon fichier comporte bien plus de lignes, bien plus de "sous tableaux". il faudra donc que je modifie complète ta formule.

tu en penses quoi?

Bonjour Goliath, bonjour le forum,

En pièce jointe ton fichier modifié. J'ai aussi modifié le code en remplaçant le nom des tableaux structurés des onglets sous tableaux par leur index et ça ne bugue plus.

Le code (qui est déjà dans le fichier) :

Private Sub Worksheet_Deactivate()
Dim TP1 As ListObject 'déclare la variable TP1 (Tableau Principal 1)
Dim TP2 As ListObject 'déclare la variable TP2 (Tableau Principal 2)
Dim TP3 As ListObject 'déclare la variable TP3 (Tableau Principal 3)
Dim ST1 As ListObject 'déclare la variable ST1 (Sous Tableau1)
Dim ST2 As ListObject 'déclare la variable ST2 (sous Tableau 2)
Dim ST3 As ListObject 'déclare la variable St3 (sous Tableau 3)

Set TP1 = Worksheets("tableau principal").ListObjects("Tableau4") 'définit le tableau TP1
Set TP2 = Worksheets("tableau principal").ListObjects("Tableau2") 'définit le tableau TP2
Set TP3 = Worksheets("tableau principal").ListObjects("Tableau5") 'définit le tableau TP3
Set ST1 = Worksheets("sous tableau 1").ListObjects(1) 'définit le tableau ST1
Set ST2 = Worksheets("sous tableau 2").ListObjects(1) 'définit le tableau ST2
Set ST3 = Worksheets("sous tableau 3").ListObjects(1) 'définit le tableau ST3
If ST1.ListRows.Count > 1 Then ST1.DataBodyRange.Delete 'si ST1 contient au moins une ligne, efface les données de ST1
TP1.Range.Copy ST1.Range 'récupère les données de TP1 dans ST1
If ST2.ListRows.Count > 1 Then ST2.DataBodyRange.Delete 'si ST2 contient au moins une ligne, efface les données de ST2
TP2.Range.Copy ST2.Range 'récupère les données de TP2 dans ST2
If ST3.ListRows.Count > 1 Then ST3.DataBodyRange.Delete 'si ST3 contient au moins une ligne, efface les données de ST3
TP3.Range.Copy ST3.Range 'récupère les données de TP3 dans ST3
End Sub

Le fichier :

11goliath-ep-v01.xlsm (31.73 Ko)

Ok, merci.

Je regarde, je l'utilise et je te dis quoi

COOL ça marche nickel

je le place dans mon fichier existant pour l'utiliser

(je reviens vers toi si je bug)

merci beaucoup

Bonjour ThauThème,

je reviens vers toi car, comme je l'ai indiqué, ton fichier fonctionne très bien, par contre, je n'arrive pas à le faire fonctionner sur mon vrai fichier (celui que je t'ai fourni est un fichier simplifié)
J'ai essayé de modifié ton code, en remplaçant par exemple "tableau principal" par le vrai nom donné à la feuille, en modifiant "sous tableau 1-2-3 ... par les vrais noms de feuilles, j'ai fait aussi l'essai de rajouter le nombre de feuille correspondant au nombre de sous tableau, et pleins d'autres essais mais ça ne fonctionne pas.
Il faut dire je ne sais pas, et ne comprends pas trop les formules macro, donc je tatonne.

Aurais-tu encore quelques instants à me consacrer? (par exemple, si tu es d'accord, je t'envoie mon vrai document)

Bonjour Goliath,

Désolé pour le retard mais suis actuellement hospitalisé et sans PC. Je devrai pourvoir regarder ça ce week-end.

ok,

je mets en attente, ce n'ai pas pressé.

Dès que tu le peux, reviens vers moi et je t'envoie le fichier

Merci

Bonjour ThauThème,

es tu disponible pour regarder mon fichier?
Bonjour ThauThème,

es tu disponible pour regarder mon fichier?
Rechercher des sujets similaires à "creer extrait tableau feuille qui modifie tout seul"