Bonsoir,
J'ai inséré des cases à cocher (formulaire) en colonne C liées aux cellules en colonne B.
En cochant/décochant mon code ne fonctionne pas.
Un peu perdu merci pour votre aide.
Le Worksheet_Change() n'a rien à voir avec les cases à cocher bien que la cellule associée change de valeur. Et ça parait bizarre mais c'est comme ça.
Comme ces cases sont des Contrôles de Formulaire, il faut que tu affectes un Macro à chaque case à cocher (clic droit sur la case à cocher, puis affecter une macro).
Si ces cases à cocher étaient des Contrôles Active X, il faudrait passer en mode Création puis double-cliquer sur la case à cocher pour que le Sub de l'évènement correspondant s'inscrive automatiquement dans le code de la feuille (Parent du Contrôle Active X).
Je pense que c'est pour ne pas cumuler 2 actions sur un Contrôle de Formulaire:
- L'action liée à l'éventuelle macro associée au Contrôle.
- L'action liée à un Worksheet_Change() qui viendrait en double et peut-être en conflit.
Je vous remercie pour votre retour et explications. Mais je reste perplexe. En effet, je ne comprends pas la raison du non déclenchement de l’évènement étant donné que la valeur d'une cellule liée change.
Je me demandais si mon code ci-dessous est incorrect
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dl As Long, Rng As Range
dl = UsedRange.Cells(UsedRange.Cells.Count).Row
Set Rng = Range("B6:B" & dl)
If Target.Count > 1 Then Exit Sub
' If Not Intersect(Target, Rng) Is Nothing Then
If Intersect(Target, Rng) Then
If Target.Value = "VRAI" Then
MsgBox "je copie"
Else
MsgBox "j'efface"
End If
End If
End Sub
Les cellules liées aux contrôles de formulaire (case à cocher, case d'option, barre de défilement) ne créent pas d'évènement Change quand elles sont modifiées par le contrôle, c'est facile à vérifier.
Les cellules liées aux contrôles de formulaire (case à cocher, case d'option, barre de défilement) ne créent pas d'évènement Change quand elles sont modifiées par le contrôle, c'est facile à vérifier.
Merci pour ton retour. Justement, je suis sur l'une de tes contributions pour un problème similaire, où tu préconises d'utiliser l'évènement Calculate. Je suis entrain d'essayer de m'en sortir avec ton idée.
Alors ça c'est comme chercher le passage de Nord-Est pour aller de Paris à Versailles.
Pourquoi faire simple, comme expliqué précédemment, en associant une macro à une case à cocher Contrôle de Formulaire (ce que tu as choisi de faire) ou si c'est une case à cocher Contrôle Active X, en gérant son évènement _Click() quand on peut faire très compliqué et non fonctionnel.
Je suggère cette solution comme alternative au "pourquoi faire simple"...
Avec un Application.Ontime(), lancer chaque seconde une fonction qui va scanner toutes les cases à cocher de la feuille et comparer le contenu de leurs cellules associées avec ce même contenu précédent stocké dans une table. Évidemment la résolution étant la seconde, on ne percevra pas les clics On/Off faits rapidement. Mais est-ce important ?
Bonjour @Dudu2,
kker un membre, ce qui m'a permis d'apprendre que les cellules liées ne déclenche pas d'évènements. J'ai monté le fichier joint juste pour illustrer la demande (mais avec des cases à cocher pour chacune des lignes. D'ailleurs, il n'est allé jusqu'à sa dernière ligne).
Et, J'ai eu un doute sur mon code d'où cette discussion. En essayant d'aider, je découvre beaucoup de chose que je connaissais pas.
Je lui ai proposé une solution avec userform, à lui de voir si ça lui convient.