Modifier le contenu de plusieurs onglets en modifiant le contenu d'un seul

Bonjour,

je reviens vers vous avec une nouvelle question, vos réponses vont forcément m'aider à la réalisation de mon projet de stage et pourront aider d'autres gens.

**_Le sujet:_** dans ma mission je veux faire un outil automatisé de suivi de la production, j'ai fais des MFC. vert = la tâche est achevé et le jaune = la tâche est en cours.

**_La problématique:_**

dans le classeur vous trouverez 3 anglets, les superviseurs vont travailler sur 1 seul onglet (pas toujours le même (aujourd'hui anglet 1 demain 3 ...)).

Je veux que quand il y a une modification sur un onglet les autres onglets ce mettent à jours automatiquement.

les possibilités de modification:

suppression ou ajout d'une ligne entière.

changement du contenu de la colonne SUIVI.

changement du contenu de la colonne N pièce.

26exemple.xlsx (12.44 Ko)

Bonjour,

En écrivant "anglet" je suppose que tu veux dire "onglet" ? Sinon, tu parles soit de la ville du Sud-Ouest soit d'une entaille à angle droit !

Tu parles de mise à jour mais quelles cellules de quelles colonnes car les tableaux ne sont pas vraiment identiques ? Feuil2, Feuil4 oui, Feuil1 non !

Bonjour et excusez mon pauvre niveau de français !

Bon,les tableaux ne doivent pas être identiques (spécificité de mon projet).

je m'explique un peut plus clairement: par exemple :

j'ai fini la phase montage du train avant et je suis entrain de travailler sur la Feuil 4, je change le En cours et je le remplace par un OK, je veux que sur toutes les autres feuils le En cours de la phase montage train avant sera remplacer par un OK, pareil pour le numéro de pièce.(il faut que le changement sera effectuer automatiquement quelque soit la feuil sur laquelle je travail).

Les colonnes qui doivent être identiques sont les colonnes SUIVI et N DE PIÈCE.

Bonjour

Pour ce soir voici déjà le travail pour :

changement du contenu de la colonne SUIVI.

changement du contenu de la colonne N pièce.

23copies.xlsm (26.48 Ko)

Pour la suite, il fera jour demain, je l'espère

A+

Bonjour,

Code à mettre dans le module du classeur (double-clic sur ThisWorkbook et coller dans la partie de droite). Les colonnes cibles sont E et C pour Feuil1 et B et D pour Feuil2 et Feuil4. Pour que ça fonctionne, il te faut supprimer la première ligne de la feuille Feuil1 afin qu'il y est correspondance de ligne ou alors insérer une ligne au dessus des tableaux des feuilles Feuil2 et Feuil4 :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub

    Application.EnableEvents = False

    Select Case Sh.Name

        Case "Feuil2", "Feuil4"
            If Target.Column <> 2 And Target.Column <> 4 Then GoTo Fin

            Worksheets("Feuil1").Cells(Target.Row, Target.Column + 1).Value = Target.Value
            Worksheets("Feuil2").Cells(Target.Row, Target.Column).Value = Target.Value
            Worksheets("Feuil4").Cells(Target.Row, Target.Column).Value = Target.Value

        Case "Feuil1"
            If Target.Column <> 3 And Target.Column <> 5 Then GoTo Fin

            Worksheets("Feuil1").Cells(Target.Row, Target.Column).Value = Target.Value
            Worksheets("Feuil2").Cells(Target.Row, Target.Column - 1).Value = Target.Value
            Worksheets("Feuil4").Cells(Target.Row, Target.Column - 1).Value = Target.Value

    End Select

Fin:

    Application.EnableEvents = True

End Sub

Bonjour,

Merci Patty merci Theze pour votre aide, je croix que le code de Theze est plus facile à comprendre pour moi vu mon niveau en VBA et en programmation en général.

M. Theze est ce que vous pouvez m'expliquer votre code car je dois l'adapté comment je cible telle et telle colonne.

Si quelqu'un d'entre vous pourra me proposer une solution pour que si je rajoute une ligne ou je la supprime sur une feuil je vais avoir la meme chose sur les autres feuils (car c'est fréquent que je rajoute de nouvelle pièces)

Cordialement

Bonjour apprentissage, bonjour Theze

Oui, en ce moment je suis un peu dans le cirage et n'ai pas du tout pensé à ce qu'a fait Theze. Sûr qu'au niveau compréhension, c'est plus facile à décortiquer.

Bravo Theze

A+

Re,

Voici le code commenté pour plus de compréhension :

'cette procédure est généré quand un changement de valeur s'effectue dans une cellule de n'importe quelle feuille...
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    'si target est supérieur à une cellule (par exemple sélection puis suppression), fin de procédure
    If Target.Count > 1 Then Exit Sub

    'empêche les procédures événementielles "Workbook_SheetChange()" et
    '"Worksheet_Change()" de ce produire à nouveau car des valeurs de cellule vont être modifiées
    Application.EnableEvents = False

    Select Case Sh.Name

        'si le changement de valeur s'effectue dans les feuilles "Feuil2" et "Feuil4"...
        Case "Feuil2", "Feuil4"
            'si cette modif s'effectue sur une colonne différente de B et D va à l'étiquette Fin...
            If Target.Column <> 2 And Target.Column <> 4 Then GoTo Fin

            'sinon, répercute la valeur modifiée sur les autres cellules des trois feuilles
            '+1 pour "Feuil1" à cause du nombre de colonnes différent par rapport aux autres feuilles
            'il faut savoir que la valeur est réinscrite dans la cellule où elle a été rentrée mais ça simplifie le code
            Worksheets("Feuil1").Cells(Target.Row, Target.Column + 1).Value = Target.Value
            Worksheets("Feuil2").Cells(Target.Row, Target.Column).Value = Target.Value
            Worksheets("Feuil4").Cells(Target.Row, Target.Column).Value = Target.Value

        Case "Feuil1"
            'idem que ci-dessus mais pour les colonnes C et E concernant la feuille "Feuil1"
            If Target.Column <> 3 And Target.Column <> 5 Then GoTo Fin

            Worksheets("Feuil1").Cells(Target.Row, Target.Column).Value = Target.Value
            Worksheets("Feuil2").Cells(Target.Row, Target.Column - 1).Value = Target.Value
            Worksheets("Feuil4").Cells(Target.Row, Target.Column - 1).Value = Target.Value

    End Select

'étiquette servant à aiguiller le code ici dans le cas où ce ne sont pas les colonnes cible
'et ceci afin de rétablir les procédures événementielles afin la fin...
Fin:

    'rétabli les événements
    Application.EnableEvents = True

End Sub

Bonjour Patty , Bonjour Theze , Salut forum,

Le problème est résolu de 2 manières différentes, je tiens à vous remercie pour votre aide et vos explications.

A bientôt.

Rechercher des sujets similaires à "modifier contenu onglets modifiant seul"