Macro événementielle basée sur la valeur d’une cellule

Bonjour le Forum,

Est-il possible de déclencher une macro sur la base de la valeur d’une cellule ?

Je m’explique : Il faudrait qu’une macro définissant une zone d’impression correspondant à 1 pleine page se déclenche si le résultat d’un calcul est plus grand ou égal à zéro. Si ce résultat est plus petit que zéro, la zone d'impression devrait correspondre à 2 pleines pages.

Dans l’exemple ci-joint, si la valeur de la cellule B25 est plus grand ou égal à zéro, le texte « Calcul comparatif inutile » s’affiche en A27 et seule la première page devrait être préparée pour l’impression (mais l’impression ne doit pas encore être lancée à ce moment-là).

https://www.excel-pratique.com/~files/doc/Demo.xls

Le code serait

ActiveSheet.PageSetup.PrintArea = "$A$1:$E$28"

mais comment le déclencher ?

Si le résultat de la cellule B25 est plus petit que zéro, le texte « Veuillez effectuer le calcul comparatif ci-dessous » s’affiche en A27 et deux pages devraient être préparées pour l’impression :

ActiveSheet.PageSetup.PrintArea = "$A$1:$E$68"

Tout ceci sous entendrait que la macro serait déclenchée à chaque fois qu’une cellule est modifiée, mais ça ne serait pas trop gênant puisque cela ne serait pas visible tant que l’on ne veut pas imprimer.

Bonnes salutations à tous.

Bonsoir,

Essaye le code suivant sur la feuille correpondante :

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
  If Target.Address = "$B$25" And Target.Value >= 0 Then
    [A27].Formula = "Calcul comparatif inutile"
    ActiveSheet.PageSetup.PrintArea = "$A$1:$E$28"
  Else
    [A27].Formula = "Veuillez effectuer le calcul comparatif ci-dessous"
    ActiveSheet.PageSetup.PrintArea = "$A$1:$E$68"
  End If
  Application.EnableEvents = True
End Sub

Bonsoir,

Bonsoir, Raja

perso, j'utiliserai de préférence l'évènement Calculate, la cellule B25 comprenant une formule, et ne sera donc jamais modifiée, du moins manuellement

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If [B25] >= 0 Then
    [A27] = "Calcul comparatif inutile"
    ActiveSheet.PageSetup.PrintArea = "$A$1:$E$28"
Else
    [A27] = "Veuillez effectuer le calcul comparatif ci-dessous"
    ActiveSheet.PageSetup.PrintArea = "$A$1:$E$68"
End If
Application.EnableEvents = True
End Sub

Bonjour le Forum,

Merci à Raja et à Felix pour leur proposition.

Felix, ta formule fonctionne parfaitement et correspond absolument à mon attente.

Raja, lorsque j’essaie de modifier quoi que ce soit sur ma feuille de calcul, ta macro – pourtant placée au même endroit que celle de Felix - n’est pas déclenchée. Si j’essaie de taper F5 dans Visual Basic, une fenêtre s’ouvre et demande le nom de la macro. Désolé ! Mais ça n’enlève rien à la reconnaissance que j’ai pour ton dévouement.

Encore merci à vous tous et bonne journée.

Rechercher des sujets similaires à "macro evenementielle basee valeur"