Mise à jour de cellule sur plusieurs onglets simultanément et indépendamment

Signaler
Messages postés
6
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
13 juillet 2021
-
Messages postés
9965
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 juillet 2021
-
Bonjour la communauté,
J'aimerais changer simultanément et de facon indépendante une cellule sur plusieurs feuilles excel avec une liste déroulante.
Au final, j'aimerais que la valeur sélectionnée soit mise à jour dans chaque feuille concernée.
Exemple détaillé dans le fichier partagé.

Onglets: Principal, AAA, BBB et CCC.

J'aimerais donc que si je change une cellule spécifique dans AAA, les mises à jour se font dans Principal, BBB et CCC.
Si c'est dans BBB, les mises à jour se font dans Principal, AAA et CCC, ainsi de suite (donc de facon indépendante)

Merci d'avance pour votre aide.

Salutations

Lien pour le fichier partagé:
https://mon-partage.fr/f/yMOwwCKB/

4 réponses

Messages postés
9965
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 juillet 2021
2 161
Bonjour

Avec macro
Le code est dans chaque module des feuilles à traiter
https://mon-partage.fr/f/kfVKl6C0/

Cdlmnt
Messages postés
6
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
13 juillet 2021

Merci ccm81,

Par contre ca ne marche que pour l'onglet "Principal". Par contre en changeant dans les autres onglet rien ne se passe. Mais grâce à ton code j'ai trouvé la solution. Donc merci beaucoup!!!

En fait dans le code de d'appellation des variables il manque une variable:

Option Explicit

Public Const FP = "Principal"
Public Const celmoisFP = "B2"
Public Const celmoisF = "A1" 'dans les autres onglets (AAA,BBB et CCC) la cellule à changer est dans A1 et non B2

Public Const FA = "AAA"
Public Const FB = "BBB"
Public Const FC = "CCC"
Public Const celmoisFX = "A1"


et dans les onglets secondaires, l'Intersection est différence ainsi que la mise à jour de l'onglet principal:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim m As String
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range(celmoisSecondaire)) Is Nothing Then 'à ce niveau
Application.EnableEvents = False
m = Target.Value
Sheets(FP).Range(celmoisFP).Value = m 'Et à ce niveau
Sheets(FB).Range(celmoisFX).Value = m
Sheets(FC).Range(celmoisFX).Value = m
Application.EnableEvents = True
End If
End Sub

Merci bcp pour ton aide rapide
Messages postés
9965
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 juillet 2021
2 161
Exact
un copier/coller intempestif !!
dans les modules de feuille l'erreur était ici
If Not Intersect(Target, Range(celmoisFP)) Is Nothing Then
à modifier comme ça
If Not Intersect(Target, Range(celmoisFX)) Is Nothing Then

Cdlmnt
Messages postés
9965
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 juillet 2021
2 161
RQ. Tu peux ajouter cette procedure dans le module 1 qui te permettra de reinitialiser la prise en compte d'un changement en cas de plantage

Public Sub reinit()
Application.EnableEvents = True
End Sub

Cdlmnt
Messages postés
6
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
13 juillet 2021

Ben oui, c'est redondant et stupide ce que j'ai fait...
Je me retrouve avec 1 cellule qui est liée à 2 noms variables... n'importe quoi...

Merci, c'est pour ca que tu m'as proposée le Reinit()?
Sinon je ne comprends pas très bien cette procédure
Messages postés
9965
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 juillet 2021
2 161
Si ça plante en cours d'exécution, l'instruction
Application.EnableEvents = False
inhibe l'exécution de la procedure Change
donc plus de réaction à un changement
et
Application.EnableEvents = True
permet de re-activer la procedure Change

Tu as aussi la solution de fermer excel et de le ré-ouvrir

Cdlmnt