Effectuer un programme automatiquement 2

Résolu
Bonjour tous le monde,

Voila un programme qui a un problème.
La cellule A9 de la feuille 1 est égale à la cellule A10 de la feuille 2
Quand je modifie directement la cellule A9 de la feuille 1 le programme ci-dessous s'applique correctement. Mais lorsque je modifie la cellule A10 de la feuille 2 le programme ne marche pas. Pourquoi?

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Sheets("feuil1").Range("A9")) Is Nothing Then

If target = 1 Then

Range("A9:d12").Interior.ColorIndex = 0
Range("a9:a12").Interior.ColorIndex = 3

ElseIf target = 2 Then

Range("A9:d12").Interior.ColorIndex = 0
Range("a9:b12").Interior.ColorIndex = 3

ElseIf target = 3 Then

Range("A9:d12").Interior.ColorIndex = 0
Range("a9:c12").Interior.ColorIndex = 3

ElseIf target = 4 Then

Range("A9:d12").Interior.ColorIndex = 0
Range("a9:d12").Interior.ColorIndex = 3

end if

End If
End Sub

28 réponses

Résumé de la discussion

Le problème est que le code VBA ne réagit que lorsque la cellule A9 de la feuille 1 est modifiée, alors que A10 de la feuille 2 peut être lié à A9 sans déclencher l’événement. La logique actuelle ne surveille que Target dans A9 de Feuil1 et ne capte pas les modifications sur Feuil2, ce qui explique l’écart entre les deux cas. Des réponses proposées dans la discussion recommandent d’utiliser Workbook_SheetChange ou d’appliquer le même code sur chaque feuille, ou de passer par une routine commune appelée par toutes les feuilles. En dernier lieu, plusieurs échanges suggèrent d’éviter les dépendances directes entre feuilles et de normaliser les paramètres via une procédure centrale pour gérer les couleurs.

Bobot (l’IA à votre service)
  1. Re,

    Vous ne donnez pas quel excel vous utilisez, donc pour le fichier suivant,

    https://www.cjoint.com/c/CGsjvNsZU2z

    si excel 2007 et plus: pas de probleme

    si anterieur a 2007: mfc ne marchra pas

    supprimez la mfc si presente dans les regles

    allez dans le VBA de la feuille Recap et enlevez la ligne Exit sub indiquee, la mise a jour des couleurs ce fera a chaque activation de l'onglet Recap

    A+
    1. Bonjour,

      La cellule A9 de la feuille 1 est égale à la cellule A10 de la feuille 2 comment ????
      1. a l'interieur de la cellule A9 (dans le tableau excell) il y a =feuil2!A10
        1. Contributeur
          Bonjour,
          Private Sub Worksheet_Change(ByVal Target As Range)
              If Target.Count > 1 Then Exit Sub
              If Target.Address = "$A$1" and Target > 0 And Target < 5 Then
                  Range("A9:d12").Interior.ColorIndex = xlNone '0 c'est noir
                  Range(Cells(9, "A"), Cells(12, Target)).Interior.ColorIndex = 3
              End If
          End Sub
          A+

          Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
          Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
          1. Bonjour l'ermite222

            ton programme fonctionne mais que sur la feuille active.
            c'est pareil que mon premier programme (en plus sophistiquer!!)
            1. Contributeur
              Ah oui... où c'est que tu dis que ça doit aller dans toutes les feuilles ??
              Mais c'est pas un problème...
              Tu colle ça dans le module ThisWorkBook
              Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
                 If Target.Count > 1 Then Exit Sub
                  If Target.Address = "$A$1" And Target > 0 And Target < 5 Then
                      Sh.Range("A9:d12").Interior.ColorIndex = xlNone '0 c'est noir
                      Sh.Range(Cells(9, "A"), Cells(12, Target)).Interior.ColorIndex = 3
                  End If
              End Sub

              S'il y a des feuilles à exclure tu dis.
              1. Ce n'est pas encore bon!

                Quand je modifie la cellule A9 de la feuille 1 les programmes fonctionnent correctement

                Maintenant la cellule A9 de la feuille 1 est égale à =feuil!2A10
                Lorsque je modifie la cellule A10 de la feuille 2, la cellule A9 de la feuille 1 change bien de valeur mais le programme ne s'est pas éffectué.
                1. Contributeur
                  Désolé mais là, je comprend plus rien.
                  Pourrais tu essayé d'expliquer CLAIREMENT ce que tu souhaite de la façon..
                  Je modifie la cellule A1 feuil1 entre 1 et 4, ça c'est OK ?
                  Je modifie la cellule XX et les cellules XX doivent se modifier de XX
                  etc..
                  Si tu parvient pas à expliquer, mettre un exemple de ton classeur sur Cjoint.com et mettre le lien sur un poste suivant.
                  A+

                  1. Tiens voila le lien :
                    https://www.cjoint.com/?0GnlbpthYeJ

                    Je modifie la cellule A1 feuil1 entre 1 et 4. OK
                    A1 feuil1 = 1 et les cellules (A9:A12) se mettent en rouge
                    A1 feuil1 = 2 et les cellules (A9:B12) se mettent en rouge
                    A1 feuil1 = 3 et les cellules (A9:C12) se mettent en rouge
                    A1 feuil1 = 4 et les cellules (A9:D12) se mettent en rouge

                    Sa c'est OK!!

                    Maintenant je rentre la formule = feuil2!A10 dans la cellule A1 feuille 1
                    quand je modifie A10 feuille 2:
                    A10 feuil2 = 1 => A1feuil1 = 1 et les cellules A9:A12 ne se mettent pas en couleur
                    A10 feuil2 = 2 => A1feuil1 = 2 et les cellules A9:B12 ne se mettent pas en couleur
                    A10 feuil2 = 3 => A1feuil1 = 3 et les cellules A9:C12 ne se mettent pas en couleur
                    A10 feuil2 = 4 => A1feuil1 = 4 et les cellules A9:D12 ne se mettent pas en couleur
                    1. Contributeur
                      Je modifie la cellule A1 feuil1 entre 1 et 4. OK
                      En tout cas, pas sur ton classeur (y me semblais que....) bref.
                      A voir
                      Mais je suis pas sûr que c'est ce que tu veux...
                      A+

                      1. Bonjour a vous deux,

                        Lixil:
                        pourquoi voulez-vous passez par le changement de valeur de la cellule Feuil1!A9 pour executer votre code ??? Si vous mettez votre code dans le VBA de la feuil2 sur changement de A10 en ajoutant que ce sont des cellules de la feul1 que vous voulez changer la couleur, ne serait-ce pas mieux ???
                        1. Bonjour l'Ermite
                          Le programme marche mais pas quand tu modifie la cellule A10 de la feuille 2 donc c'est pas encore sa... (Merci pour ton aide et ta patience!!)

                          Bonjour f894009
                          Oui je pourrais mettre le programme dans la feuille 2 mais la c'est un exemple.
                          La où je voudrais l'appliquer, il y a 52 feuilles qui modifient 1 cellule donc soit je trouve un programme qui satisfait mes désirs, soit je 'applique ta solution et je dois mettre un programme dans les 52 feuilles!
                          1. Contributeur
                            Le programme marche mais pas quand tu modifie la cellule A10 de la feuille 2 donc c'est pas encore sa... (Merci pour ton aide et ta patience!!)
                            ça commence à...
                            C'EST QUOI EXACTEMENT QUE TU VEUX ?????????????????????????
                            1. Bonjour,

                              il y a 52 feuilles qui modifient 1 cellule Vous serez bien obliger de faire un minimun de code par feuille avec l'evenement change et un passage de un ou plusieurs parametres a un module unique qui changera vos couleurs. De plus, dans votre logique, la cellule A9 de feuille1 ne pourra pas etre egale a la cellule A10 de feuille 12 et A10 de feuille24, vous ne pouvez pas mettre de formule dans cette cellule.
                              1. Contributeur
                                Pour ma part, y a rien qui "clignote" et rien qui fonctionne ???
                                Mais bon, si t'a trouvés tant mieux.
                                Et vu... QUE TU NE SAIS PAS EXPLIQUER CE QUE TU VEUX,.
                                abandon du suivi.
                                @++
                                Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                                Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
                                1. Re,

                                  pour qu'une ou plusieurs cellules clignotent, il faut un changement de couleur du contenu ou du contenant. Dans votre code du module CellulesVidesClignotent, il n'y a pas de changement de couleur et pourquoi une boucle pour une cellule

                                  For Each a In Sheets("feuil1").Range("a9") ?????

                                  Le .Cells ----> pas compris !!!!
                                  1. Nan mais sa c'est pas grave!
                                    la cellule A1 feuil1 est egale à =feuil2!A10
                                    change la valeur A10 de la feuille 2 et le programme marche dans la feuille 1

                                    Mais comme c'est du bidouillage j'ai utilisé un autre programme où la des cellule clignotent (pour toujours actualiser la feuille 1) c'est pourquoi il me faudrait un programme mieux adapté!
                                    1. Bonjour,

                                      La où je voudrais l'appliquer, il y a 52 feuilles qui modifient 1 cellule et
                                      la cellule A1 feuil1 est egale à =feuil2!A10 et
                                      le programme marche dans la feuille 1 ca ne peut pas aller !!!!!

                                      si formule dans A1 feuil1 (=feuil2!A10):
                                      Excel met a jour la cellule mais ne declanche pas l'evenement worksheet_change car la feuille n'est pas active.

                                      Ou en etes-vous dans la programmation VBA excel ???????
                                      1. si formule dans A1 feuil1 (=feuil2!A10):
                                        Excel met a jour la cellule mais ne declanche pas l'evenement worksheet_change car la feuille n'est pas active.

                                        Oui voila c'est exactement sa mon problème!!
                                        En passant par le programme des cellules qui clignotent j'arrive à declencher l'évenement worrksheet_change mais j'aimerai un programme mieux adapté!!!

                                        Et j'ai aucune connaissance en programmation VBA excell! je sais que bidouiller.
                                        • 1
                                        • 2