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

snake211 Messages postés 11 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
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

  1. snake211 Messages postés 11 Statut Membre
     
    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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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
    2. snake211 Messages postés 11 Statut Membre
       
      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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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