Macro remplacement de texte

Bonjour,

J'aimerais créer une macro qui s'active dès que l'on utilise une certaine page d'un classeur, qui supprime une partie de cette feuille et qui écrive un texte à la place.

Voici mon code :

Sub Auto_Open()

If DateDiff("d", Now, "31/12/18") > 0 Then

Range("P15:S18").Select

Selection.ClearContents

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

Range("P15:Q18").Select

ActiveCell.FormulaR1C1 = "Veuillez contacter la maintenance"

Range("P15:Q18").Select

Selection.Font.Bold = True

Selection.Font.Italic = True

Selection.Font.Size = 16

Selection.VerticalAlignment = xlVAlignCenter

Selection.Font.ColorIndex = 3

Selection.Interior.Color = RGB(174, 240, 194)

Selection.Borders.Weight = 4

Selection.Borders.Color = RGB(255, 0, 0)

Else

MsgBox "Veuillez contacter la maintenance"

End If

End Sub

Sub Auto_Close()

If DateDiff("d", Now, "31/12/18") > 0 Then

Cependant, je n'ai pas l'impression que la macro détecte bien quand elle doit s'activer.

En effet, quand je remplace la date par le 20/07/18, rien ne se passe :/

Merci d'avance

Bonjour,

vous devez passer par les macros "de la feuille" et choisir l'événement "Activate"

La sub ainsi créée sera lancée lors de l'activation de la feuille.

Pour le "Close" il faudra prendre l"événement "Desactivate".

@ bientôt

LouReeD

Merci de votre réponse, cependant, je suis déjà dans la macro de la feuille (image)

Et concernant la deuxième proposition, je n'ai pas compris, est-ce que je dois écrire

Sub Auto_Close()

If DateDiff("d", Now, "20/07/18") > 0 Then

Desactivate

cfef

Bonjour, Salut LouReed !

Bon !

D'abord, il serait bien de mettre le code cité dans un post sous balises Code ! Cela fait partie des bonnes pratiques et montre qu'on se soucie que la lisibilité soit au mieux pour les intervenants qui auront à le lire.

2e remarque : les macros Auto_Open et autres Auto_... sont des vieilleries datant d'avant la mise en place des procédures d'évènements (apparues avec Excel 97 si mes souvenirs sont bons). Elles sont à remplacer par les procédures évènementielles correspondantes, mais comme l'a souligné LouReed, encore faut-il choisir les bons évènements...

En outre, les procédures Auto_... doivent être placées dans un module standard !

Par contre les procédures d'évènements sont elles, à mettre dans les modules de feuille ou du classeur selon le cas...

Sur le code : il n'est pas vraiment rationnel d'utiliser Now, qui renvoie la date et l'heure, au lieu de Date lorsqu'on opère sur une différence de dates !

Toujours sur le code : ce qui suit est du code enregistré, absolument pas épuré, qui demeure donc à réécrire, les Select et Selection sont à éliminer, et la plupart des lignes sont inutiles.

Encore sur le code : en sélectionnant P15:Q18... après avoir fusionné P15:S18 , c'est qu'on fait un peu n'importe quoi. Ou encore : on colore le texte en rouge en utilisant ColorIndex, et la bordure en rouge en utilisant la valeur RGB, cela fait quelque peu dispersé, et mettre 4 comme épaisseur du trait ne fait pas plus technique et est moins parlant que xlThick...

Enfin, la notion de Page n'a de réalité que lorsqu'il s'agit d'impression. Ne pas confondre Page et Feuille, subdivision d'un classeur...

Cordialement.

Rechercher des sujets similaires à "macro remplacement texte"