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

Résolu
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -  
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Normad Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   40
     
    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