Worksheet_Change

Bonsoir,

Je ne sais pas trop comment utiliser cet évènement. J'ai mis ce code et excel a planté (mémoire insuffisante).

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A9") = "Dépenses" Then
Range("B8") = "Initiateur_Dépenses"
ElseIf Range("A9") = "Recettes" Then
Range("B8") = "Initiateur_Recettes"
End If
End Sub

Voilà en A9, j'ai mis une validation, je voudrais que dans la cellule B8, il y est le mot "Initiateur_"& valeur de A9.

c-à-d si A9=Dépenses en B8=Initiateur_Dépenses et A9=Recettes en B8=Initiateur_Recettes.

En vous remerciant.

Salut CP4,

normal, c'est une procédure qui se lance dès qu'un changement intervient dans une cellule. Tu changes le contenu d'une cellule, la procédure se rappelle elle-même, parfois à l'infini, d'où erreur.

Quand tu joues avec Worksheet_Change, toujours penser à annuler l'interception des événements, le temps de terminer les-dits changements.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
If Range("A9") = "Dépenses" Then
    Range("B8") = "Initiateur_Dépenses"
ElseIf Range("A9") = "Recettes" Then
    Range("B8") = "Initiateur_Recettes"
End If
'
Application.EnableEvents = True
'
End Sub

A+

Bonjour,

Une autre proposition.

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$9" Then
        Select Case Target.Value
            Case "Dépenses"
                [B8].Value = "Initiateur_Dépenses"
            Case "Recettes"
                [B8].Value = "Initiateur_Recettes"
        End Select
    End If
End Sub

Bonjour à tous,

tant qu'on y est :

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = [A9] Then Range("B8") = "Initiateur_" & [A9]
    Application.EnableEvents = True
End Sub

Mais pourquoi une macro alors qu'une simple formule suffit ???

="Initiateur_"&A9

eric

Bonjour,

C'est parfait. 3 solutions qui fonctionnent très bien.

@curulis57 : Merci pour le code et les explications.

@Jean-Eric : Merci: pourquoi Target.Address = "$A$9" et non Range("A9") tout court?

@eriiic : Merci, même question ci-dessus. En effet, j'aurais pu utiliser une formule mais je suis entrain d'apprendre le vba,

c'est un exercice.

Merci à vous et bon week-end.

Bonjour,

pas de chance, tu as pris la seule incomplète.

curulis57 est parti de ton code où tu ne testais pas la cellule d'appel.

Ta macro sera exécutée complètement sur n'importe quelle saisie au lieu de seulement sur la cellule concernée.

If Target.Address = [A9] Then est important

eric

Rechercher des sujets similaires à "worksheet change"