Microsoft 365 Private Sub Worksheet_Change ne fonctionne pas

Englobe

XLDnaute Nouveau
Bonjour,

Je n'arrive pas à faire déclencher la macro .

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Call Remplit
End Sub

Je veux que la macro Remplit s'exécute lors d'un changement de couleur dans une cellule ou une entrée.
Lorsque d'un essai précédent, il y avait une boucle sans fin dont il a fallu que j'arrête le tout.

Merci de votre aide.
 

Pièces jointes

  • test1 (V3).xlsm
    107 KB · Affichages: 3
Solution
Bonjour.
Je ne vois pas d'autre solution qu'avec une boucle lancée dans un Sub Worksheet_SelectionChange qui vérifie en permanence si la Target.Interior.Color n'a pas changé …
Le dispositif existe dans mon CouleurCls.xlsm pour la colonne "Échantillon" des feuilles d'études.
N'oubliez pas de mettre un DoEvents dans la boucle pour qu'elle n'empêche pas Excel de travailler.
Merci Dranreb,
Je regarde de ce côté.
Bonne journée

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Englobe, Danielco,
il y avait une boucle sans fin dont il a fallu que j'arrête le tout.
Normal.
Quand on modifie une valeur on exécute Worksheet_Change qui lance Remplit.
Dans Remplit on écrit en C9.
Comme on écrit dans la feuille on exécute Worksheet_Change qui lance Remplit.
Dans Remplit on écrit en C9.
...
Ca peux durer longtemps, c'est ce qu'on appelle de la ré entrance.
Pour pallier au souci il suffit d'invalider les events avant d'écrire dans la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Call Remplit
    Application.EnableEvents = True
End Sub

la macro Remplit s'exécute lors d'un changement de couleur
A noter que cette macro n'agira pas sur un changement de couleur d'une cellule, il faut un Enter pour l'activer.
 

Pièces jointes

  • test1 (V4).xlsm
    107.1 KB · Affichages: 2

Englobe

XLDnaute Nouveau
Bonjour Englobe, Danielco,

Normal.
Quand on modifie une valeur on exécute Worksheet_Change qui lance Remplit.
Dans Remplit on écrit en C9.
Comme on écrit dans la feuille on exécute Worksheet_Change qui lance Remplit.
Dans Remplit on écrit en C9.
...
Ca peux durer longtemps, c'est ce qu'on appelle de la ré entrance.
Pour pallier au souci il suffit d'invalider les events avant d'écrire dans la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Call Remplit
    Application.EnableEvents = True
End Sub


A noter que cette macro n'agira pas sur un changement de couleur d'une cellule, il faut un Enter pour l'activer.
Merci sylvanu,

Cette correction fonctionne à merveille.
Question
Comment rendre exécutable un changement de couleur de fond de cellule par contre... si c'est possible?

Encore merci
 

Pièces jointes

  • test1 (V4).xlsm
    107.6 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne vois pas d'autre solution qu'avec une boucle lancée dans un Sub Worksheet_SelectionChange qui vérifie en permanence si la Target.Interior.Color n'a pas changé …
Le dispositif existe dans mon CouleurCls.xlsm pour la colonne "Échantillon" des feuilles d'études.
N'oubliez pas de mettre un DoEvents dans la boucle pour qu'elle n'empêche pas Excel de travailler.
 

Englobe

XLDnaute Nouveau
Bonjour.
Je ne vois pas d'autre solution qu'avec une boucle lancée dans un Sub Worksheet_SelectionChange qui vérifie en permanence si la Target.Interior.Color n'a pas changé …
Le dispositif existe dans mon CouleurCls.xlsm pour la colonne "Échantillon" des feuilles d'études.
N'oubliez pas de mettre un DoEvents dans la boucle pour qu'elle n'empêche pas Excel de travailler.
Merci Dranreb,
Je regarde de ce côté.
Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 179
Membres
112 677
dernier inscrit
Justine11