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

  • Initiateur de la discussion Initiateur de la discussion Buk
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
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
 
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 😉
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
310
Retour