vérifier exactitude d'une date

Blafi

XLDnaute Occasionnel
Bonjour le forum,

Je n'arrive pas à résoudre le problème suivant:

J'ai construit une macro qui me permet par l'intermédiaire d'un userform équipé de spinbuttons et de textbox de saisir une date et de l'insérer dans une cellule.
Ca marche bien mais le pb est qu'ainsi, je ne gère pas les nombres de jours du mois choisi ni les années bissextiles, ce qui autorise l'utilisateur à entrer pour le jour 31 m^me si le mois n'en a que 30 ou s'il s'agit du mois de février qui n'en a que 28 ou 29.
Comment pourrais-je améliorer ma macro pour réaliser ce controle ?
Ci-joint mon classeur avec ses macros...
Merci d'avance aux champions de VBA qui vont me résoudre ce pb et à bientôt...
 

deudecos

XLDnaute Impliqué
Bonsoir Blafi, le forum,

Ton fichier ne nous est pas parvenu, retente en verifiant que tu l'a bien zipe, qu'il fait moins de 50 ko et surtout que son nom ne comporte aucun caractere special ni espace...
Nous attendons... ;)

Bonne soiree

Olivier
 
B

Blafi

Guest
En vérifiant mon post, je m'aperçois que le fichier n'a pas l'air d'être passé... pourtant je l'ai zipé et il fait 11Ko..
Je recommence, j'espère que cette fois ça va marcher. [file name=BDDdate.zip size=11746]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/BDDdate.zip[/file]
 

Pièces jointes

  • BDDdate.zip
    11.5 KB · Affichages: 22

deudecos

XLDnaute Impliqué
Re Blafi, le forum, Pat1545,

Juste un essai en piece jointe, mais pour les annees bissextiles, je seche, ou plutot, ca marcherait, mais je crois bien qu'un calendrier dans l'userform serait effectivement bien mieux.

Bonne soiree

Olivier [file name=BDDdate_20050612172002.zip size=13082]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/BDDdate_20050612172002.zip[/file]
 

Pièces jointes

  • BDDdate_20050612172002.zip
    12.8 KB · Affichages: 16
B

blafi

Guest
Merci aux 2 forumeurs qui m'ont répondu...J'ai pris cette solution plutôt qu'un calendrier car c'est une macro a utiliser avec une version antérieur d'excel et de VBA sur laquelle je n'est pas le controle calendrier.
Je vais déja regarder ce que dedeucos m'a fait et si quelqu'un a une autre idée...je prends.
A bientôt...
 

JeanMarie

XLDnaute Barbatruc
Bonjour

houlala pas de contrôle calendar dans les anciennes version, tu n'as pas besoin de cette bestiole (qui n'est pas utilisable sur mac, Merci Bill).
Ici d'excellents intervenants pense à recréer pour nous pauvres utilisateurs d'anciennes version de magnifiques utiltaires.

Voici l'userform de Didier, je te donne le premier lien sur le fil http://www.excel-downloads.com/html/French/forum/messages/1_105758_105758.htm

@+Jean-Marie
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Blafi, deudecos, pat1545, JeanMarie, le Forum.

Merci JeanMarie.

Effectivement Blafi, pour insérer une date dans une feuille Excel, j'ai conçu une macro complémentaire qui pourrait peut-être t'être utile... cette macro complémentaire a pour origine le fil de discussion indiqué par JeanMarie Lien supprimé, et tu pourras trouver la dernière version en section de téléchargement d'XLD Lien supprimé.
Par ailleurs, tu trouveras toutes les explications nécessaires quant à son utilisation ICI.

Cordialement,
 

myDearFriend!

XLDnaute Barbatruc
Cela dit Blafi, ci-dessous une solution simple pour remédier à ton problème....

Tu peux essayer de modifier ta procédure CommandButton2_Click() comme suit :
Private Sub CommandButton2_Click()
Dim date1 As Date
      'Teste si la date saisie existe
      If Not IsDate(TextBox1.Value & '/' & TextBox2.Value & '/' & TextBox3.Value) Then
            MsgBox 'Date non reconnue'
            Exit Sub
      End If
      'Met à jour la cellule
      date1 = DateSerial(TextBox3.Value, TextBox2.Value, TextBox1.Value)
      Range('E5').Value = date1
      'Décharge l'USF de la mémoire
      Unload Me
End Sub
Pour information, lorsque tu fais 'UserForm1.Hide', ton USF est caché mais il est toujours en mémoire. Il est préférable d'utiliser 'Unload Me' pour libérer l'espace mémoire inutilisé.

Par ailleurs, comme je le fais de temps en temps, je me permets de t'inviter à déclarer TOUTES les variables avec lesquelles tu travailles. Pour t'éviter quelques surprises futures, je ne puis que te conseiller de mettre une ligne 'Option Explicit' en tête de chacun de tes modules de code. Cela t'obligera à déclarer l'ensemble des variables que tu utilises. Et pour ne pas avoir à mettre manuellement 'Option Explicit' dans chaque nouveau module que tu insères, tu peux faire Menu Outils / Options.../ Onglets 'Editeur' et cocher 'Déclaration des variables obligatoire' depuis l'éditeur VBE.

Cordialement,
 
B

Blafi

Guest
Après quelques heures d'absence, je consulte les réponses a ma demande et là, félicitations, vous avez fait fort !
Avec toutes ces solutions, je devrais m'en sortir, alors encore merci à myDearFriend, Jean-marie et dedeucos.... Je vous tiendrai au courant de mes réalisations quand j'aurai tout regardé.
A bientôt donc et bon courage..
 

Discussions similaires

Réponses
20
Affichages
1 K