Afficher un msgbox sur tout le workbook en cas de changement d'une cellule

Bonjour,

J'aimerais recevoir un msgbox sur tout le classeur (n'importe la feuille où je suis) lorsque la valeur C1 sur la feuille "CASH" change.

Je vous remercie pour votre aide.

Bien cordialement,

Yassine F

Hello,

C'est du classeur partagé ?

Bonjour,

Non c'est un classeur normal en local.

Ok.

Par contre tu peux m'expliquer comment peut changer une cellule si tu n'est pas sur la cellule ?

C'est une cellule calculée ?

Oui exacte, c'est une cellule calculée et elle est impacté par la plupart des autres feuilles.

Tu as combien de feuille en tout ?

Car je ne pense pas que tu es d'autre choix que d'insérer du code dans chaque feuilles

Pas beaucoup (environ 10 feuilles), mais je pensais que c'était possible en mettant mon code sur la partie "WORKBOOK"

image

Oui c'est mieux en effet

Je stock la valeur de C1 dans une cellule à l'ouverture du classeur.

Puis je viens comparer C1 à cette valeur à chaque fois que la feuille est recalculée.

Si différente alors msgbox puis mise à jour de la cellule, sinon rien.

Private Sub Workbook_Open()
Sheets(1).[G1] = Sheets("CASH").Range("C1")
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
With Worksheets("CASH")
    If .[C1] <> Sheets(1).[G1] Then
        MsgBox "change"
        Sheets(1).[G1] = .[C1]
    End If
End With
End Sub

Il y a peut être mieux à faire ...

Merci pour la proposition. Malheureusement ça plante le fichier excel (on dirait ça crée un boucle infini)

Salut,

Tu peux sinon utiliser l'évènement Worksheet_Calculate()

De la manière qui suit :

Dans la feuille "CASH"

Private Sub Worksheet_Calculate()

    Dim Ws_cash As Worksheet
    Set Ws_cash = ThisWorkbook.Worksheets("CASH")

    If Ws_cash.Range("C1").Value <> valeurBase Then
        MsgBox "Valeur différente !"
        valeurBase = Ws_cash.Range("C1").Value
    End If

End Sub

Dans le Workbook :

Private Sub Workbook_Open()
    valeurBase = ThisWorkbook.Worksheets("CASH").Range("C1").Value
End Sub

Et aussi penser à déclarer la variable "valeurBase" en public dans un module.

Bibu

Merci pour votre aide.
Malheureusement ça m'affiche le msgbox à chaque fois qu'il y'a un calcul sur la feuille sans que vraiment le cellule en question change.

Merci
Yassine

Bonjour Yassinefar000, Le Forum,

Pas beaucoup (environ 10 feuilles), mais je pensais que c'était possible en mettant mon code sur la partie "WORKBOOK"

Voici le code en exemple.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Exemple la feuille 1 a en D1 la formule =Feuil3!C1+Feuil2!C1 et en E1 la valeur 0 (zéro)
'Chaque fois que l'une des 2 autres feuilles impliqueront une variation de D1 le message apparaîtra
If Sheets("Feuil1").Range("D1") <> Sheets("Feuil1").Range("E1") Then
MsgBox "Feuille 1 modifiée"
Sheets("Feuil1").Range("E1") = Sheets("Feuil1").Range("D1")
End If
End Sub

A adapter pour ton classeur. La valeur 0 doit être placé avant l'inscription de la macro.

Rechercher des sujets similaires à "afficher msgbox tout workbook cas changement"