XL 2016 Macro sélection date départ

MORISS

XLDnaute Junior
Bonjour,

Je viens vers vous car je souhaiterais savoir s'il existe une macro qui ajoute à chaque cellules de catégorie date (01/01/2016) une sélection de date de départ automatique.

Merci d'avance pour votre aide

Bien cordialement
 

Si...

XLDnaute Barbatruc
Salut

Pour Lionel (ou toute personne intéressée), vite fait, une adaptation d’un de mes calendriers mais les restrictions (exceptions, date de fin) méritent de plus amples informations.

Nota : j’ai privilégié le Doubleclic pour éviter les tests du Clic, et n’ai pas touché à la position du calendrier (trop de lignes de programmation pour le faire apparaître entièrement quand la sélection est trop près d’un bord).
 

Pièces jointes

  • Calendrier(VBA).xlsm
    25.1 KB · Affichages: 55

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour Danreb,

LOL, maintenant que "sachassez" tous les problèmes sont résolus (donc plus de questions sauf 1) avec votre nouvelle version, j'essai de comparer les codes des 2 versions pour tenter de comprendre ..... c'est pas gagné ;)

Pour mon utilisation, j'ai vraiment apprécié la possibilité de "borner" la sélection de date : mini et maxi.
Mais voilà LOL, mes bornages mini et maxi ne sont pas les mêmes que le votre et j'ai tenté de trouver ce qu'il fallait modifier à votre code.

Par exemple, je souhaiterais :
mini = aujourd'hui -10
maxi : aujourd'hui + 91

Je pense que c'est là qu'il faudrait modifier :
'gestion du calendrier
Private Sub Arriere_Click()
M = M - 1
If M = 0 Then M = 1
TMois = MonthName(M): j1 = DateSerial(TAn, M, 1): D1 = Format(j1 - Weekday(j1, 3), "D")
Maj_Cal
End Sub
Private Sub Avant_Click()
M = M + 1
If M = 13 Then M = 1
TMois = MonthName(M): j1 = DateSerial(TAn, M, 0): D1 = Day(j1 - Weekday(j1, 3))
Maj_Cal
End Sub

Mais rien à faire, toutes mes tentatives n'ont rien donné ... pire, j'ai tout fusillé (enfin, j'avais une sauvegarde et la possibilité de recharger LOL),

Vous pourriez me dire ce qu'il faut modifier ?
Encore merci,
Amicalement,
Lionel,
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Je n'envisage pas d'équiper mon calendrier d'un tel système de restriction.
Aussi je le réafficherais tant que la date saisie ne sera pas dans les limites, ce qui devrait rester rare, non ? :
VB:
Dim Titre As String, DatProp As Date, DatSais As Variant
UFmCalend.Posit Target, 0, 1
Titre = "Quand ça ?": DatProp = Date
Do
  DatSais = UFmCalend.Saisie(Titre, DatProp)
  If IsEmpty(DatSais) Then
     Exit Sub
  ElseIf DatSais < Date - 10 Then
     DatProp = Date - 10: Titre = "Trop tôt !"
  ElseIf DatSais > Date + 91 Then
     DatProp = Date + 91: Titre = "Trop tard !"
  Else
     Exit Do: End If: Loop
Target.Value = DatSais
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Merci Danreb pour votre réponse.
Loin de moi l'idée de vous faire modifier cotre calendrier ......
C'est un besoin pour mon travail.

Toujours nul, je n'ai pas su placer votre nouveau code .....
Je désespère d'être "pas trop mauvais" en VBA pourtant, j'ai l'impression d'avancer un peu sur d'autres points.
Amicalement,
Lionel,
 

Si...

XLDnaute Barbatruc
Re, re et re (je ne bafouille pas ;))

Sache Arthour973 que je suis Si… et non Danreb.

Pour Mon calendrier la solution est très simple, les limites sont prises en compte dans le Module de classe Jour

VB:
Public WithEvents Jour As Msforms.Label
Private Sub Jour_Click()
  Dim Le As Date
  Le = CDate(Jour.Tag) 'date choisie
   With UQuand
    .Oui.Visible = 0
    If Le < Date - 10 Or Le > Date + 91 Then Exit Sub ‘bornes (incluses ou pas, à revoir)
    .Oui.Visible = 1: .Oui = Le
    .Auj = IIf(.Oui = Date, "Aujourdhui", "La Date")
  End With
End Sub
 

Dranreb

XLDnaute Barbatruc
je n'ai pas su placer votre nouveau code .....
Je désespère d'être…
Alors si ça vous intéresse toujours, joignez ce que vous avez essayé, que je vous dise ce qui ne va pas.
(Est il équipé de mon UFmCalend au moins ? Avec toutes ces confusions entre Si… et moi, on ne sais jamais…)

Remarque: J'ai seulement omis les tests d'applicabilité, tout le reste est à remplacer complètement par ce code là.

Les déclaration d'abord et ensuite à partir de UFmCalend.Posit Target, 0, 1
 
Dernière édition:

Discussions similaires

Réponses
26
Affichages
426

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2