Créer des feuilles identiques en lien réciproques
Bonjour,
2 manip que je ne sais pas faire :
1 Je voudrais créer une feuille 1 avec la totalité des données (pe 3 colonnes A, B et C), puis créer 2 feuilles identiques telles que si je modifie une cellule sur la feuille 1 , elle soit modifiée sur les feuilles 2 et 3 mais aussi l'inverse si je modifie sur la feuille 2 celà modifie 1 et 3.
2 L'idée est ensuite de filtrer ou de mettre en forme (?) les feuilles (filles) 2 et 3 par un tri sur une colonne : par exemple dans la feuille 2 seule les lignes "en cours"( item de la colonne B) apparaissent et dans la feuille 3 une autre présentation.
Il faut bien sur que la ligne 2 de la feuille 2 reste liée à la ligne x de départ de la feuille 1.
J'ai cherché avec les copies de feuilles (mais c'est "one shot" et incompatible avec des modifications dans les 2 sens), comme l'ajout de lignes est régulier je ne peux pas recopier des liens à chaque fois (de plus là aussi c'est dans un seul sens); bien sur on pourrait limiter la problèmatique à 1 seule feuille et plusieurs mises en forme mais là aussi si on travaillle sur le produit mis en forme on ne modifie pas la source (et il y a plusieurs utilisateurs).
NB: je cherche des fonctions existantes car je ne me sens pas capable d'écrire des macros compliquées .
Merci.
salut, j'ai une petite solution espérons que ça puisse vous aider
juste pour signaler que je travaille sur excel 2007, donc j'ai pu écrire un petit code VBA.
ouvrez un nouveau classeur et copiez le code suivant dans le module de feuille de la feuille 1
Private Sub Worksheet_Change(ByVal Target As Range)
Ligne = Target.Row
col = Target.Column
If ThisWorkbook.ActiveSheet.Name = "Feuil1" Then
ThisWorkbook.Worksheets(2).Cells(Ligne, col) = Target.Value
ThisWorkbook.Worksheets(3).Cells(Ligne, col) = Target.Value
End If
End Subensuite le code suivant dans le module de feuille de la feuille 2
Private Sub Worksheet_Change(ByVal Target As Range)
Ligne = Target.Row
col = Target.Column
If ThisWorkbook.ActiveSheet.Name = "Feuil2" Then
ThisWorkbook.Worksheets(1).Cells(Ligne, col) = Target.Value
ThisWorkbook.Worksheets(3).Cells(Ligne, col) = Target.Value
End If
End Subet enfin le suivant dans le module de feuille de la feuille 3
Private Sub Worksheet_Change(ByVal Target As Range)
Ligne = Target.Row
col = Target.Column
If ThisWorkbook.ActiveSheet.Name = "Feuil3" Then
ThisWorkbook.Worksheets(2).Cells(Ligne, col) = Target.Value
ThisWorkbook.Worksheets(1).Cells(Ligne, col) = Target.Value
End If
End Subje pense que ça devrait resoudre le premier cas, quand au filtre vous pouvez faire la suite. Je rappelle que c'est avec excel 2007 que je travail.
on attend l'avis des experts
Bonsoir un autre essai (un début, pour le reste un fichier serait top).
Dans un module:
Option Explicit
Public Sub Sh_Change(ByRef Sh As Worksheet, Tgt As Range)
Dim Ws As Worksheet
Application.ScreenUpdating = False: Application.EnableEvents = False
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> Sh.Name Then Ws.Range(Tgt.Address) = Tgt
Next Ws
Application.EnableEvents = True
End SubDans chaque feuille:
Private Sub Worksheet_Change(ByVal Target As Range)
Sh_Change Me, Target
End SubMais le plus simple reste à sélectionner les 3 feuilles...
Cdt,
Darzou