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

Fermé
snake211
Messages postés
10
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
10 novembre 2021
- 13 juil. 2021 à 13:31
ccm81
Messages postés
10463
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
21 septembre 2022
- 13 juil. 2021 à 16:49
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

ccm81
Messages postés
10463
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
21 septembre 2022
2 315
13 juil. 2021 à 14:38
Bonjour

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

Cdlmnt
0
snake211
Messages postés
10
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
10 novembre 2021

13 juil. 2021 à 15:40
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
0
ccm81
Messages postés
10463
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
21 septembre 2022
2 315
13 juil. 2021 à 15:46
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
0
ccm81
Messages postés
10463
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
21 septembre 2022
2 315
13 juil. 2021 à 15:53
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
0
snake211
Messages postés
10
Date d'inscription
jeudi 14 novembre 2019
Statut
Membre
Dernière intervention
10 novembre 2021

13 juil. 2021 à 16:41
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
0
ccm81
Messages postés
10463
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
21 septembre 2022
2 315
13 juil. 2021 à 16:49
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
0