Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 [Résolu] Date du jour lors du changement de valeur d'une cellule

Buk

XLDnaute Nouveau
Bonjour,

Je bute sur une fonctionnalité que je souhaiterais ajouter à un fichier de suivi.
Dans la colonne E, j'ai l'état de mon dossier. Cet état est affecté par le biais d'une liste déroulante.
Dans la colonne B, la date est affectée manuellement lors de la création de la ligne.

Lorsque je passe à l'état "En cours" en colonne E je veux que la date du jour soit automatiquement affecté en colonne B.
Point important, mon état "En cours" peut ensuite évoluer en "Clôturé" mais je ne veux pas que la date change lors de ce changement d'état.

J'ai essayé avec la fonction Worksheet_SelectionChange(ByVal Target As Range) mais je ne parviens pas à faire ce que je veux (probablement parce que je n'ai pas compris la synthaxe de cette fonction).
J'en viens à avoir des doutes sur le bien fondé de cette fonction dans mon cas précis.

Je vous joins le fichier sur lequel j'ai fait mes essais.

Merci de votre aide.
 

Pièces jointes

  • Test événement.xlsm
    14.2 KB · Affichages: 6
Solution
Bonjour
Bonjour le Fil(Bernard),le Forum
voilà ce que j'ai mis et qui semble répondre à la demande !
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("E6:E100")) Is Nothing Then
        Application.EnableEvents = False
           Rw = Target.Row
           ov = Target.Value
        With Cells(Rw, 2)
           .Value = IIf(ov <> "Clôturé", Date, .Value)
        End With
         Application.EnableEvents = True
    End If     
End Sub
jean marie

ChTi160

XLDnaute Barbatruc
Bonjour
Bonjour le Fil(Bernard),le Forum
voilà ce que j'ai mis et qui semble répondre à la demande !
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("E6:E100")) Is Nothing Then
        Application.EnableEvents = False
           Rw = Target.Row
           ov = Target.Value
        With Cells(Rw, 2)
           .Value = IIf(ov <> "Clôturé", Date, .Value)
        End With
         Application.EnableEvents = True
    End If     
End Sub
jean marie
 

Buk

XLDnaute Nouveau
Merci pour le coup de main, ça marche parfaitement.

J'ai juste apporté 2 modifs après recherche sur le forum
- La fonction "Target.Count" au cas où il y aurait sélection de plusieurs cellules
- Modif dans la fonction IIf où ov = "En cours" plutôt que "ov <> Clôturé"

Je souhaiterais juste avoir une précision sur la fonction IIf pour bien la comprendre.
Il s'agit d'une fonction binaire où dans mon cas, on contrôle le contenu de la Target, s'il est vrai on insère la date du jour et s'il est faux on conserve la valeur existante ?

Voici le code final

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   
    If Target.Count > 1 Then Exit Sub
   
    If Not Application.Intersect(Target, Range("E6:E100")) Is Nothing Then
        Application.EnableEvents = False
           Rw = Target.Row
           ov = Target.Value
        With Cells(Rw, 2)
           .Value = IIf(ov = "En cours", Date, .Value)
        End With
        Application.EnableEvents = True
    End If
End Sub

Merci pour vos retours rapide
 

Jean-Eric

XLDnaute Occasionnel
Bonjour,
Une autre façon de voir la chose.
Cdlt.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Not Application.Intersect(Target, Me.Range("E6:E100")) Is Nothing Then
            If Target.Value = "En cours" Then Me.Cells(Target.Row, 2).Value = Date
        End If
    End If
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…