Microsoft 365 alerte si cellule change de valeur

  • Initiateur de la discussion Initiateur de la discussion thenesol
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thenesol

XLDnaute Junior
bonjour à tous

j'ai essayé ce code
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Spécifiez les cellules nommées à surveiller
    Dim CellulesSurveillees As Range
'    Set CellulesSurveillees = Union(Me.Range("OK_Formules"), Me.Range("OK_cellErr"), Me.Range("Tot_Ctrl")) ' Ajoutez toutes les cellules nommées
    Set CellulesSurveillees = Me.Range("B2") ' Ajoutez toutes les cellules nommées


    ' Vérifiez si l'une des cellules modifiées est surveillée
    If Not Application.Intersect(Target, CellulesSurveillees) Is Nothing Then
        ' Affichez une alerte
        MsgBox "La valeur d'une des cellules surveillées a changé !"
    End If
End Sub

qui ne génère pas de message quand B2 (qui contient la formule = A1+A2) change de valeur

pourquoi ...?

merci !
 
j'ai bien essayé les 2 , mais j'ai constaté que :

1/ avec Worksheet_Calculate , nécessite de préciser la valeur (et non pas un changement quelconque)
Private Sub Worksheet_Calculate()
If Range("B2") = 5 Then MsgBox "attention !!"
End Sub
si ça devient autre chose que 5, pas d'alerte

et 2/ avec Worksheet_Change, il faut saisir manuellement dans B2 pour avoir une alerte

est-ce bien le cas ?
si oui, impossible de surveiller un changement sur B2 (sans surveiller A1 ou A2 qui n'étaient que pour exemple)?
 
VB:
Private Sub Worksheet_Calculate()
MsgBox "attention !!"
End Sub
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B2].DirectPrecedents) Is Nothing Then MsgBox "attention !!"
End Sub
 
ça marche...! 🙂
mais avec 1 seule cellule 😕

j'ai tenté sur plusieurs cellules avec Union mais ça plante sur la ligne "set...union..."
(et ensuite, je tenterai aussi des cellules nommées)

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Spécifiez les cellules nommées à surveiller
    Dim CellulesSurveillees As Range
'    Set CellulesSurveillees = Union(Me.Range("OK_Formules"), Me.Range("OK_cellErr"), Me.Range("Tot_Ctrl")) ' Ajoutez toutes les cellules nommées
    Set CellulesSurveillees = Union(Me.Range([A13].DirectPrecedents), Me.Range([A14].DirectPrecedents), Me.Range([K16].DirectPrecedents)) ' Ajoutez toutes les cellules nommées
'    Set CellulesSurveillees = Me.Range("B2") ' Ajoutez toutes les cellules nommées
    ' Vérifiez si l'une des cellules modifiées est surveillée
    If Not Application.Intersect(Target, CellulesSurveillees) Is Nothing Then
        ' Affichez une alerte
        MsgBox "La valeur d'une des cellules surveillées a changé !"
    End If
End Sub
 
Bonjour à tous,
Ceci ne fonctionne pas ?
VB:
Option Explicit
Dim tmp


Private Sub Worksheet_Change(ByVal Target As Range)
    If [b2].Value <> tmp Then MsgBox "La valeur d'une des cellules surveillées a changé !"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    tmp = [b2].Value
End Sub
 
super, merci encore !

dernière chose : si je lance une macro vb qui va traiter ma feuille (elle dure plusieurs minutes), y a t il une méthode propre pour qu'elle ne soit pas interrompue par ce contrôle, juste le temps de son execution, à part effacer ce code ?
 
Il suffit de désactiver les évènements puis de les réactiver :
VB:
Application.EnableEvents = False
'ici votre code
Application.EnableEvents = True
Attention, ne pas sortir de la macro avant que les évènements soient réactivés.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
619
Retour