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

snake211 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
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/
A voir également:

4 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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   Statut Membre Dernière intervention  
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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   Statut Membre Dernière intervention  
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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