XL 2016 Date automatique

JOUB42

XLDnaute Occasionnel
bonjour a tous
Je voudrais mettre une date automatiquement
dans ma colonne A 20 une fois que je saisis un nom dans la cellule F20
j'ai recopié cette formule ci dessous
mais j ai un message d'erreur d'execution (13) quand j efface sur ma cellule F20

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F20:F110")) Is Nothing Then
Target.Offset(0, -5).Value = Now
If Target.Value = "" Then Target.Offset(0, -5).Value = ""
End If
End Sub

merci pour votre aide
JOUB42
 

patricktoulon

XLDnaute Barbatruc
bonjour
c'est normal que tu est une erreur
tu change la "FXX" ca déclenche l'events change et ça change la "AXX"

donc
quand ca change le "AXX" tu re déclenche l’événement
conclusion l'événement change sur target "AXX".offset(,-5) déclenche une erreur car il n'y a plus rien a gauche de "A" ;)

conclusion il te faut gérer l'events

voici donc deux propositions
un change la A en face la F
l'autre si un changement venait a etre operer sur plus de 1 cellule en f20:f110 ca opererait sur toute les cellules d'en face en A

code 1 cellule

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("F20:F110")) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
          Target.Offset(, -5).Value = Array(Date, "")(Abs(Target.Value = ""))
        Application.EnableEvents = True
    End If
End Sub
code multi cellules
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("F20:F110")) Is Nothing Then
      Application.EnableEvents = False
       For Each cel In Target.Cells
            cel.Offset(, -5).Value = Array(Date, "")(Abs(cel.Value = ""))
       next
Application.EnableEvents = True
  End If
End Sub
voila ;)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
c'est que quelque chose déraille chez toi
demo4.gif
 

patricktoulon

XLDnaute Barbatruc
a ben oui si tu a des fusions en terme de ligne dans "F" LA bonne blague !!!
on base l'action sur le target.count=1 si tu a des fusions ben walouh!!!
il faut bricoler
un peu comme ceci
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim CelA As Range, CelF As Range
    If Not Application.Intersect(Target, Range("F20:F110")) Is Nothing Then
        Set CelF = Target.Areas(1).Cells(1)
        Set CelA = CelF.Offset(, -5)
         Application.EnableEvents = False
          CelA.Value = Array(Date, "")(Abs(CelF.Value = ""))
        Application.EnableEvents = True
    End If
End Sub
;)
 

Discussions similaires

Réponses
1
Affichages
242
Réponses
11
Affichages
287

Statistiques des forums

Discussions
312 206
Messages
2 086 207
Membres
103 158
dernier inscrit
laufin