Macro Liée au changement de la valeur d une cellule

Résolu/Fermé
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 23 janv. 2014 à 12:24
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 23 janv. 2014 à 21:02
Bonjour,

j'ai un problème je n'arrive pas à déclencher ma procédure quand la valeur de la cellule B2 change.

La cellule B2 contient un nombre de 1 à 12.
Et je veux afficher en D4 le mois correspondant.

J'ai enregistre cette procédure dans un module
et j'ai appelé la procédure dans un événement de la feuille activate

Quand j'essaie en pas a pas ça fonctionne,
en revanche ça ne fonctionne pas quand j'active la feuille

Par avance merci de votre aide

sub mois

Dim Mois As String
Dim cell As Integer

cell = Range("$B$2").Value

If cell = 1 Then
Mois = "janvier"
ElseIf cell = 2 Then
Mois = "février"
ElseIf cell = 3 Then
Mois = "mars"
ElseIf cell = 4 Then
Mois = "avril"
ElseIf cell = 5 Then
Mois = "mai"
ElseIf cell = 6 Then
Mois = "juin"
ElseIf cell = 7 Then
Mois = "juillet"
ElseIf cell = 8 Then
Mois = "aout"
ElseIf cell = 9 Then
Mois = "septembre"
ElseIf cell = 10 Then
Mois = "octobre"
ElseIf cell = 11 Then
Mois = "novembre"
ElseIf cell = 12 Then
Mois = "décembre"
Else
Mois = "Mois"
End If
Range("D4").Value = Mois


end sub

2 réponses

Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 39
Modifié par Normad le 23/01/2014 à 14:11
Bonjour,

Il faut déclencher par l'événement Worksheet_Change de la feuille si l'adresse de la plage (Target) est B2


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$B$2" Then Exit Sub
'Suite du code - la valeur de B2 a changé


End Sub



Pour le reste du code, on pourrait un peu simplifier tous ces IF ELSEIF.... avec un Select Case, ce qui donnerait :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Integer, Mois As String

If Target.Address <> "$B$2" Then Exit Sub
cell = Target.Value

Select Case cell
    Case Is = 1: Mois = "Janvier"
    Case Is = 2: Mois = "Février"
    Case Is = 3: Mois = "Mars"
    Case Is = 4: Mois = "Avril"
    Case Is = 5: Mois = "Mai"
    Case Is = 6: Mois = "Juin"
    Case Is = 7: Mois = "Juillet"
    Case Is = 8: Mois = "Août"
    Case Is = 9: Mois = "Septembre"
    Case Is = 10: Mois = "Octobre"
    Case Is = 11: Mois = "Novembre"
    Case Is = 12: Mois = "Décembre"
End Select

If Mois <> "" Then Range("D4").Value = Mois

End Sub
1