XL 2021 Formule pour Date

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 !

MuscatMimi

XLDnaute Accro
Bonjour a tout le Forum

Fichier joint
J'aimerais savoir s'il est possible
Quand je saisie les prix Colonne A,il faut que la date de saisie soit affichée automatiquement dans colonne Même ligne, et en dur afin que cette date ne change pas chaque jour automatiquement
Ensuite
Si j'efface le prix colonne A il faut que ça efface automatiquement la Date colonne B
Merci
 

Pièces jointes

Bonjour @MuscatMimi😀, @job75😉,

Sans calcul itératif, mais avec du code VBA (un peu commenté) dans le module de la feuille concernée:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xcell
   ' si aucune cellule de la colonne A  n'a été modifiée alors on quitte
   If Intersect(Target, Range("a2:a" & Rows.Count)) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False  ' on fige l'écran (plus rapide)
   On Error Resume Next    ' si la valeur modifiée est une erreur, on continue l'exécution
   Application.EnableEvents = False  ' pour se prémunir de la récursivité
   For Each xcell In Intersect(Target, Range("a2:a" & Rows.Count)).Cells
   ' pour chaque cellule modifiée
      If xcell <> "" Then  ' si sa valeur n'est pas vide
         xcell.Offset(, 1).NumberFormat = "dd/mm/yyyy"   ' formater la cellule date
         xcell.Offset(, 1) = Date                        ' y mettre la date du jour
      Else
         xcell.Offset(, 1).ClearContents                 ' effacer la date
      End If
   Next xcell
FIN:
   Application.EnableEvents = True  ' réactiver le traitement des évènements
End Sub
 

Pièces jointes

Dernière édition:
Bonjour @MuscatMimi😀, @job75😉,

Sans calcul itératif, avec un peu de code VBA dans le module de la feuille concernée:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xcell
   If Intersect(Target, Range("a2:a" & Rows.Count)) Is Nothing Then Exit Sub
   On Error GoTo FIN:
   Application.ScreenUpdating = False
   Application.EnableEvents = False
   For Each xcell In Intersect(Target, Range("a2:a" & Rows.Count)).Cells
      If xcell <> "" Then
         xcell.Offset(, 1).NumberFormat = "dd/mm/yyyy"
         xcell.Offset(, 1) = Date
      Else
         xcell.Offset(, 1).ClearContents
      End If
   Next xcell
FIN:
   Application.EnableEvents = True
End Sub
Bonjour @MuscatMimi , @mapomme , @job75

Demander à @MuscatMimi , s'il n'est pas plus judicieux de supprimer la ligne si on efface le prix. Cela évite d'avoir des lignes vides dans la plage de données. Que faut-il faire si l'utilisateur efface la date d'une ligne au lieu du prix ?

bon week-end.
 
Dernière édition:
Bonjour @MuscatMimi😀, @job75😉,

Sans calcul itératif, mais avec du code VBA (un peu commenté) dans le module de la feuille concernée:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xcell
   ' si aucune cellule de la colonne A  n'a été modifiée alors on quitte
   If Intersect(Target, Range("a2:a" & Rows.Count)) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False  ' on fige l'écran (plus rapide)
   On Error Resume Next    ' si la valeur modifiée est une erreur, on continue l'exécution
   Application.EnableEvents = False  ' pour se prémunir de la récursivité
   For Each xcell In Intersect(Target, Range("a2:a" & Rows.Count)).Cells
   ' pour chaque cellule modifiée
      If xcell <> "" Then  ' si sa valeur n'est pas vide
         xcell.Offset(, 1).NumberFormat = "dd/mm/yyyy"   ' formater la cellule date
         xcell.Offset(, 1) = Date                        ' y mettre la date du jour
      Else
         xcell.Offset(, 1).ClearContents                 ' effacer la date
      End If
   Next xcell
FIN:
   Application.EnableEvents = True  ' réactiver le traitement des évènements
End Sub
Super, ça fonctionne, et si je rajoute la même procédure en Col E et F, enplus de la première ça fonctionne pas
 
Bonjour tout le monde,
Demander à @MuscatMimi , s'il n'est pas plus judicieux de supprimer la ligne si on efface le prix.
Si la réponse est oui, un essai en PJ avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("A2:A" & Rows.Count)) Is Nothing Then
        If Cells(Target.Row, "A") = "" And Cells(Target.Row, "B") = "" Then Exit Sub
        Application.EnableEvents = False
        If Target = "" Then
            Rows(Target.Row).Delete Shift:=xlUp
        Else
            Cells(Target.Row, "B") = Date
        End If
        Application.EnableEvents = True
   End If
End Sub
 

Pièces jointes

Bonjour tout le monde,

Si la réponse est oui, un essai en PJ avec :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("A2:A" & Rows.Count)) Is Nothing Then
        If Cells(Target.Row, "A") = "" And Cells(Target.Row, "B") = "" Then Exit Sub
        Application.EnableEvents = False
        If Target = "" Then
            Rows(Target.Row).Delete Shift:=xlUp
        Else
            Cells(Target.Row, "B") = Date
        End If
        Application.EnableEvents = True
   End If
End Sub
non, ça va pas, ça supprime la ligne pas bon
 
- 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
5
Affichages
572
Réponses
18
Affichages
187
  • Question Question
Microsoft 365 Filtre Dynamique
Réponses
5
Affichages
190
Retour