Faire défiler mois par mois

Troudz

XLDnaute Occasionnel
Bonjour,

Sur mon classeur, l'utilisateur va devoir saisir une date dans une cellule bien précise. Cette date doit toujours correspondre au dernier jour d'un mois.

Je voudrais donc faire en sorte que, quand l'utilisateur saisi "01/01/2014" ou "30/01/2014", la saisie soit automatiquement corrigée en "31"/01/2014".

Comment puis je réaliser ceci ?

Dans un second temps, je voudrais ajouter un contrôle type "Compteur" pour que l'utilisateur puisse incrémenter la date déjà saisie d'un mois.

Est ce envisageable ?

J'ai exploré pas mal de méthodes différentes mais ça tourne systématiquement à l'usine à gaz. J'espère que certains d'entre vous connaissent une solution assez simple à mettre en place. Je vous remercie par avance.
 

Dull

XLDnaute Barbatruc
Re : Faire défiler mois par mois

Salut Troudz, le Forum

Pour ta 1ère question essaye ce code pour la cellule A1 par exemple

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, [A1]) Is Nothing Then Target = WorksheetFunction.EoMonth(Target, 0)
Application.EnableEvents = True
End Sub

Edition: Ajout de Application.EnableEvents = False et True
Bonne Journée
 
Dernière édition:

Troudz

XLDnaute Occasionnel
Re : Faire défiler mois par mois

Bonjour Dull et merci pour ta réponse

Je ne connaissais pas EoMonth, du coup j'étais en train de me créer ma propre fonction dédiée au dernier jour du mois. De plus avec EoMonth, ça me renvoi une erreur type "Propriété ou méthode non gérée par cet objet". En combinant ta solution et celle que j'étais en train d'explorer, ça donne ça :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, ThisWorkbook.Sheets("Administration").Range("DateMax")) Is Nothing Then Target.Value = DernierJourDuMois(ThisWorkbook.Sheets("Administration").Range("DateMax"))
End Sub

Public Function DernierJourDuMois(ByVal Valeur As String) As String
    DernierJourDuMois = Valeur
    While Month(DernierJourDuMois) = Month(Valeur)
        DernierJourDuMois = DateAdd("d", 1, DernierJourDuMois)
    Wend
    DernierJourDuMois = DateAdd("d", -1, DernierJourDuMois)
End Function

et ça semble fonctionner très bien !

Bon maintenant il me reste à trouver comment rajouter un contrôle "compteur" pour que l'utilisateur puisse incrémenter facilement cette date mois par mois.
 
Dernière édition:

Dull

XLDnaute Barbatruc
Re : Faire défiler mois par mois

Re le fil

Bonjour Dull et merci pour ta réponse

...Bon maintenant il me reste à trouver comment rajouter un contrôle "compteur" pour que l'utilisateur puisse incrémenter facilement cette date mois par mois.

Peux tu explicité "compteur" pour que l'utilisateur puisse incrémenter facilement cette date mois par mois.
Où, Sur la même feuille, une autre, un USF... Un bout de ton fichier pourrait nous aider grandement

A te relire

Bonne Journée
 

Troudz

XLDnaute Occasionnel
Re : Faire défiler mois par mois

Re,

Désolé je pensais que mon explication était assez précise. Il s'agit d'un contrôle "compteur" de la boîte à outils "Formulaires".

A force de farfouiller et de tout tester, je me suis rendu compte que le contrôle Vba "Toupie" va me faciliter la tâche.

Le résultat obtenu est en pièce jointe.

Hésite pas à me dire si tu découvre une possibilité de "bug"
 

Pièces jointes

  • TestDateMax.xls
    29.5 KB · Affichages: 49

Membres actuellement en ligne

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat