le___destin
XLDnaute Occasionnel
Je veux créer une colone d'un tableau lorsque je rempli la premiere case emplie automatiquement les autre cellule jusqu'à la date du fin du moi
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
While Month(Target + 1) = Month(Target)
Set Target = Target(2)
Target = Target(0) + 1
Target.NumberFormat = Target(0).NumberFormat
Wend
Application.EnableEvents = True
End Sub
Victor 21 .. bonsoir la fin du moisHabituellement le destin frappe à la porte et dit bonjour, non ?
C'est quoi le fin du toi ?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
While Month(Target + 1) = Month(Target)
Set Target = Target(2)
Target = Target(0) + 1
Target.NumberFormat = Target(0).NumberFormat
Wend
Range(Target(2), Cells(Rows.Count, Target.Column)).ClearContents 'RAZ dessous
Application.EnableEvents = True
End Sub
MerciAvec une RAZ :
VB:Private Sub Worksheet_Change(ByVal Target As Range) If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub Application.ScreenUpdating = False Application.EnableEvents = False While Month(Target + 1) = Month(Target) Set Target = Target(2) Target = Target(0) + 1 Target.NumberFormat = Target(0).NumberFormat Wend Range(Target(2), Cells(Rows.Count, Target.Column)).ClearContents 'RAZ dessous Application.EnableEvents = True End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
With Target.Resize(DateSerial(Year(Target), Month(Target) + 1, 1) - Target)
.NumberFormat = Target.NumberFormat
.DataSeries
.Offset(.Count).Resize(Rows.Count - .Count - .Row + 1).Delete xlUp 'RAZ dessous
End With
Application.EnableEvents = True
End Sub
bnjBonjour le fil, le forum,
En VBA je préfère nettement ceci, sans boucle :
Bonne journée.VB:Private Sub Worksheet_Change(ByVal Target As Range) If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub Application.EnableEvents = False With Target.Resize(DateSerial(Year(Target), Month(Target) + 1, 1) - Target) .NumberFormat = Target.NumberFormat .DataSeries .Offset(.Count).Resize(Rows.Count - .Count - .Row + 1).Delete xlUp 'RAZ dessous End With Application.EnableEvents = True End Sub
Ya t il un macro qui masque les ligne alors en metta les valeux de case zero pour que le total reste correcteD'après ce que je vois sur votre fichier ma macro n'est pas la meilleure solution.
Utilisez des formules pour incrémenter vos dates sur 31 jours et masquez les jours excédentaires 29 et 30 quand c'est nécessaire.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub
If Target.Address <> "$K$11" Then Exit Sub
If Day(Target) <> 1 Then Exit Sub
Application.EnableEvents = False
[K12:K41] = ""
Rows("12:41").Hidden = False
With Target.Resize(DateSerial(Year(Target), Month(Target) + 1, 1) - Target)
.NumberFormat = Target.NumberFormat
.DataSeries
End With
With Application
If .CountA([K39:K41]) < 3 Then
Rows(41).Offset(-2 + .CountA([K39:K41])).Resize(3 - .CountA([K39:K41])).Hidden = True
End If
End With
Application.EnableEvents = True
End Sub