Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| contrôler contenu d'un edit | |
| | Auteur | Message |
---|
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: contrôler contenu d'un edit Mar 22 Mai 2012 - 8:59 | |
| Bonjour, Je voudrais contrôler le contenu entré dans un edit, en particulier pour vérifier le bon format d'une date. Voici un essai de code : - Code:
-
dim objet% , edit1$ , i% , c$(10) , j% label verifier_date
left 0,176 top 0,128 width 0,1010 height 0,720
objet% = 1 alpha objet% left objet%,150 top objet%,100 width objet%,200 caption objet%,"Date (format : JJ/MM/AAAA) :"
objet% = 2 edit objet% left objet%,400 top objet%,100 width objet%,200 text objet%,""
objet% = 3 alpha objet% left objet%,150 top objet%,200 width objet%,200 caption objet%,"Lieu : "
objet% = 4 edit objet% left objet%,400 top objet%,200 width objet%,200 text objet%,"" on_change objet%, verifier_date
end
verifier_date: edit1$ = text$(2) if len(edit1$) <> 10 message "Le format de la date doit être JJ/MM/AAAA" else j% = 0 for i%=1 to len(edit1$) c$(j%) = mid$(edit1$,i%,1) j% = j% + 1 next i% if c$(2) <> "/" or c$(5) <> "/" then message "Le format de la date doit être JJ/MM/AAAA" end_if return
Le contrôle se déclenche quand l'utilisateur remplit le second edit. Y a-t-il mieux à faire ? Merci pour vos idées. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 10:11 | |
| Tu peux optimiser ta routine de vérification de la manière suivante: - Code:
-
verifier_date: if len(edit1$)<>10 or mid$(edit1$,3,1)<>"/" or mid$(edit1$,6,1)<>"/" message "Le format de la date doit être JJ/MM/AAAA" end_if return
à moins que tu aies besoin de ta variable c$ pour d'autres raisons. Il serait évidemment plus intéressant de faire un ON_CHANGE sur le EDIT de la date lui-même. Mais cela devient très compliqué si l'on essaie de modifier une date saisie en cliquant au milieu pour effacer un caractère... Ta solution est la solution raisonnable. Et voici une version plus sophistiquée de ta routine de contrôle: - Code:
-
dim objet% , edit1$ , i% , c$(10) , j% dim jour%, mois%, annee%, moistab%(12) moistab%(1)=31 : moistab%(2)=29 : moistab%(3)=31 moistab%(4)=30 : moistab%(5)=31 : moistab%(6)=30 moistab%(7)=31 : moistab%(8)=31 : moistab%(9)=30 moistab%(10)=31 : moistab%(11)=30 : moistab%(12)=31 label verifier_date
left 0,176 top 0,128 width 0,1010 height 0,720
objet% = 1 alpha objet% left objet%,150 top objet%,100 width objet%,200 caption objet%,"Date (format : JJ/MM/AAAA) :"
objet% = 2 edit objet% left objet%,400 top objet%,100 width objet%,200 text objet%,""
objet% = 3 alpha objet% left objet%,150 top objet%,200 width objet%,200 caption objet%,"Lieu : "
objet% = 4 edit objet% left objet%,400 top objet%,200 width objet%,200 text objet%,"" on_change objet%, verifier_date
end
verifier_date_ancien: edit1$ = text$(2) if len(edit1$) <> 10 message "Le format de la date doit être JJ/MM/AAAA" else j% = 0 for i%=1 to len(edit1$) c$(j%) = mid$(edit1$,i%,1) j% = j% + 1 next i% if c$(2) <> "/" or c$(5) <> "/" then message "Le format de la date doit être JJ/MM/AAAA" end_if return
verifier_date: j% = 0 edit1$ = trim$(text$(2)) : ' enlever d'éventuels espaces if len(edit1$)<>10 then j% = 1 if mid$(edit1$,3,1)<>"/" then j% = 1 if mid$(edit1$,6,1)<>"/" then j% = 1 if numeric(mid$(edit1$,1,2))=0 then j% = 2 jour% = val(mid$(edit1$,1,2)) if jour%<1 or jour%>31 then j% = 2 if numeric(mid$(edit1$,4,2))=0 then j% = 3 mois% = val(mid$(edit1$,4,2)) if mois%<1 or mois%>12 then j% = 3 if j%=0 then if jour%>moistab%(mois%) then j%=3 if numeric(mid$(edit1$,7,4))=0 then j% = 4 annee% = val(mid$(edit1$,7,4)) ' if annee%<1900 or annee%>2012 then j% = 4 : ' tester ici la validité de l'aannée if (annee%-int((annee%/4))*4)>0 if mois%=2 and jour%=29 then j%=3 end_if if j%=1 then message "Le format de la date doit être JJ/MM/AAAA" if j%=2 then message "Le jour est invalide" if j%=3 then message "Le mois est invalide" if j%=4 then message "L'année est invalide" return
| |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 13:28 | |
| Merci Klaus pour ton code. Tu as même pris la peine de compléter le contrôle. A noter une erreur à la ligne jour% = val(mid$(edit1$,1,2)), lorsque l'utilisateur entre un jour sur 1 seul chiffre (par exemple : 7 au lieu de 07). Ce qui se comprend puisque le programme, dans ce cas, analyse 7/ et que le second caractère n'est pas un numeric. J'ai corrigé en ajoutant un else après le if len(edit1$)<>10 .
Merci et bonne journée ... jusqu'à la prochaine !
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 13:54 | |
| J'étais parti sur le format jj/mm/aaaa tel que tu l'avais mis dans ton source. Si tu acceptes le jour sur un seul caractère, pourquoi pas le mois aussi / Alors, 3/5/2012 serait possible aussi. Il faut alors d'abord éclater edit1$ comme suit: - Code:
-
dim j$, m$, a$
i% = instr(edit1$,"/") if i%=0 j% = 1 else j$ = left$(edit1$,i%-1) edit1$ = mid$(edit1$,i%+1,len(edit1$) i% = instr(edit1$,"/") if i%=0 j% = 1 else m$ = left$(edit1$,i%-1) a$ = mid$(edit1$,i%+1,len(edit1$)) ' ici, effectuer les tests sur j$, m$ et a$ ... end_if end_if
Ainsi, tu peux tester une date de ce genre-là. | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 14:06 | |
| Non, pas de jour ni de mois sur un seul chiffre. Obligation d'entrer les dates sous le format JJ/MM/AAAA. Mais il me fallait prévoir une entrée sur un seul chiffre et avertir l'utilisateur pour qu'il complète son entrée. Peut-être, faire corriger la date incomplète par le programme, du style : - Code:
-
if len(jour$) = 1 then jour$ = "0"+jour$ if len(mois$) = 1 then mois$ = "0"+mois$
Mais il me paraît plus simple d'indiquer clairement à l'utilisateur le format à respecter, de le rappeler à l'ordre avec un avertissement, et de le coincer sur l'edit jusqu'à ce qu'il obtempère... non mais ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 14:15 | |
| Tu as raison ! Il faut imposer une certaine rigueur. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 14:33 | |
| Bonjour Ambroise, bonjour Klaus, J'ai fait un petit programme qui oblige un edit à n'accepter que des dates au format jj/mm/aaaa. On peut rentrer des dates qui vont du 01/01/0001 au 31/12/9999! Pour aller plus loin, il n'y a plus qu'à y rajouter les tests de 28 ou 29 jours en février les années bisextiles ou non! - Code:
-
label verif edit 1:on_change 1,verif end
verif: if len(text$(1))=1 or len(text$(1))=4 if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return end_if if len(text$(1))=2 if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return if val(text$(1))>31 or val(text$(1))<1 then text 1,"":return end_if if mid$(text$(1),3,1)<>"/" then text 1,left$(text$(1),2):return if len(text$(1))=5 if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return if val(right$(text$(1),2))>12 or val(right$(text$(1),2))<1 then text 1,"":return end_if if mid$(text$(1),6,1)<>"/" then text 1,left$(text$(1),5):return if len(text$(1))>6 if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return end_if if len(text$(1))=10 if val(right$(text$(1),4))<1 then text 1,left$(text$(1),6):return end_if if len(text$(1))>10 then text 1,"":return return Et on peut certainement l'améliorer encore! A+ | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 15:45 | |
| Merci Bignono pour ce long code. Je le découvre à l'instant et vais le tester. Auparavant j'ai un petit souci avec un exit_for qui n'exit_for rien du tout ! Je veux contrôler l'âge entré dans un edit qui ne doit recevoir qu'un nombre (je ne veux pas que l'utilisateur entre le mot "ans" par exemple). - Code:
-
dim objet% , edit2$ , i% , j% label verifier_age , avertir_age
left 0,176 top 0,128 width 0,1010 height 0,720
objet% = 1 alpha objet% left objet%,150 top objet%,200 width objet%,200 caption objet%,"Age : "
objet% = 2 edit objet% left objet%,400 top objet%,200 width objet%,200 text objet%,""
objet% = 3 alpha objet% left objet%,150 top objet%,300 width objet%,200 caption objet%,"Lieu : "
objet% = 4 edit objet% left objet%,400 top objet%,300 width objet%,200 text objet%,"" on_change objet%, verifier_age
end
verifier_age: edit2$ = trim$(text$(2)) j% = 0 for i%=1 to len(edit2$) if numeric(mid$(edit2$,i%,1))=0 then j% = 5 if j% = 5 then exit_for next i% if j% = 5 then gosub avertir_age
return
avertir_age: text 4, "" message "AGE : Ecrivez uniquement le nombre d'années" set_focus 2 j% = 0 return
Tentez d'entrer K125 par exemple dans l'edit âge. On obtient 2 fenêtres d'erreur plutôt qu'une. Je ne comprends pas l'affichage de la deuxième fenêtre, alors que j'ai placé un exit_for dans la boucle et en ayant j% remis à 0.
Dernière édition par ambroise le Mar 22 Mai 2012 - 15:57, édité 2 fois | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 15:52 | |
| @Bignono
L'effaçage de l'edit si le jour et le mois ne comptent pas 2 chiffres est bien intéressant. Merci à toi. Toutefois il faudrait donner une explication à l'utilisateur si on ne veut pas qu'il pête les plombs... En effet, du fait que la date s'efface, il ne peut pas se rendre compte de ce qui foire... A noter que l'année sur 2 chiffres ne déclenche pas de réaction de la part du programme. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 15:57 | |
| Tu peux remplacer: if numeric(mid$(edit2$,i%,1))=0 then j% = 5 if j% = 5 then exit_for par : if numeric(mid$(edit2$,i%,1))=0 then j% = 5 : i% = len(edit2$) Par contre je placerais un if len(edit2$) > 0 avant ta boucle for pour blinder ton test de saisi Ce qui donnerait: - Code:
-
j% = 0 if len(edit2$) > 0 for i%=1 to len(edit2$) if numeric(mid$(edit2$,i%,1))=0 then j% = 5 : i% = len(edit2$) next i% else j% = 6 end_if if j% = 5 then gosub avertir_age if j% = 6 then gosub avertir_saisie_vide
| |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 16:06 | |
| Merci Jicehel.
J'ai testé ton code et c'est le même topo : 2 fenêtres d'erreur s'ouvrent à la suite alors que je ne tente d'entrer qu'une seule erreur (exemple : K125) | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 16:23 | |
| Ambroise, dans ton 1er programme, j'ai tenu compte du message "Le format de la date doit être JJ/MM/AAAA", donc c'est normal que l'année ne réagit pas sur 2 chiffres! J'ai prévu 4 chiffres sur l'année, parce que je pense que tu es en train de faire un programme ayant trait à la généalogie et que 1758, ce n'est pas la même chose que 1958! Pour avoir fait de la généalogie et en faire toujours, je sais qu'il faut être précis, surtout avec les dates! Et puis il suffit d'afficher au dessus de ton edit "Format date: JJ/MM/AAAA" et je pense que l'utilisateur du programme ne pourra pas se tromper! A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 16:31 | |
| Dis moi, le problème ne vient pas du fait que tu traite l'objet 2 et non 4 dans ton code quand tu fais: edit2$ = trim$(text$(2)) ? pour moi à la première lecture rapide (et oui, je bosse en même temps ... le 2 devrait être 4)
| |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 16:42 | |
| - bignono a écrit:
- Et puis il suffit d'afficher au dessus de ton edit "Format date: JJ/MM/AAAA" et je pense que l'utilisateur du programme ne pourra pas se tromper!
A+
Les utilisateurs sont fantaisistes et tu as beau leur dire d'écrire comme ceci ou comme cela, si le programme ne contrôle pas les entrées, les bases de données risquent bien de devenir inutilisables. - bignono a écrit:
Dis moi, le problème ne vient pas du fait que tu traite l'objet 2 et non 4 dans ton code quand tu fais: edit2$ = trim$(text$(2)) ? pour moi à la première lecture rapide (et oui, je bosse en même temps ... le 2 devrait être 4)
Je veux bien traiter l'edit 2 (âge). L'edit 4 ne pose pas de problème (tous les noms de lieu sont acceptables). | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 17:12 | |
| OK, je disais ça car dans ta procédure, tu vides le 4 et je ne voyais pas pourquoi tu travaillais sur le 2 et vidais le 4 en cas de problème avertir_age: text 4, ""
| |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 17:19 | |
| C'est pour obliger l'utilisateur à retourner à l'edit 2 et lui interdire de continuer tant que l'âge n'est pas entré correctement. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 17:39 | |
| OK, c'est ça de regarder en bossant, les subtilités peuvent échapper. Bon, si ce n'est pas résolu quand je rentrerais ce soir cehz moi, je regarderais ça à tête reposée | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 19:48 | |
| @ambroise Pas simple de suivre 2 problèmes à la fois dans le même poste... Pour ton problème de date, je vais vais mettre un post "Utilitaire de saisie d'une date", tu pourras aller voir si çà peut te servir Pour ton problème de saisie de l'age dans un Edit, tu pourrais utiliser NUMERIC - Code:
-
if numeric(age$)=0 then message "Pas de lettres SVP":return:' ou goto suivant le cas. Bon je vais de suite poster l'utilitaire "Saisie d'une date" A+ | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 19:58 | |
| - Jean Claude a écrit:
Pour ton problème de saisie de l'age dans un Edit, tu pourrais utiliser NUMERIC
En effet... j'ai honte ! Moi qui m'évertuais à vérifier si chaque caractère était un numéric ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: contrôler contenu d'un edit Mar 22 Mai 2012 - 20:12 | |
| Il n'y a pas de honte à avoir, Panoramic propose tellement de Mots-Clé qu'il est assez difficile de les connaitre tous. C'est en demandant de l'aide, comme tu le fais, qu'on découvre. Et même pour les anciens.... A+ | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Ven 25 Mai 2012 - 18:12 | |
| Voilà le résultat après avoir lu vos propositions et avoir glané ici ou là vos bonnes idées : - Code:
-
dim annee$ , mois$ , jour$ , annee_util$ , mois_util$ , jour_util$ , mil$ , aujourdhui$ , date_util$ , annee% , bissex% , bissex100% , bissex400% edit1_objet% label verif
annee$ = right$(date$,4) mil$ = mid$(annee$,1,1) edit1_objet% = 1
alpha 2 caption 2, "Entrez une date sous le format JJ/MM/AAAA"+chr$(13)+"Faute de quoi vous serez rappelé à l'ordre !"+chr$(13)+"Toutes les erreurs sont théoriquement signalées..."+chr$(13)+"Celui qui trouvera une faille gagnera... ce code gratuit !" top 2,30 left 2, 100
edit 1:on_change 1,verif top 1,100 left 1, 100
alpha 3 caption 3, "Ce code s'est largement inspiré des codes et/ou de l'aide de Klaus, Bignono, Jean-Claude, Jicehel, JL35"+chr$(13)+"Merci à eux..." top 3,150 left 3, 100
end
verif: if len(text$(edit1_objet%))=1 if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,"" message "Quantième du jour en chiffres" return end_if if val(right$(text$(edit1_objet%),1))>3 text edit1_objet%,"" message "Quantième du jour sur 2 chiffres" return end_if end_if if len(text$(edit1_objet%))=2 if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,left$(text$(edit1_objet%),1) message "Quantième du jour sur 2 chiffres" return end_if if val(text$(edit1_objet%))>31 or val(text$(edit1_objet%))<1 text edit1_objet%,"" message "Le quantième du jour ne peut être supérieur à 31" return end_if end_if
if mid$(text$(edit1_objet%),3,1)<>"/" and len(text$(edit1_objet%))= 3 text edit1_objet%,left$(text$(edit1_objet%),2) + "/" message "Le signe de séparation / doit être accolé aux chiffres" return end_if
if len(text$(edit1_objet%))=4 if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,left$(text$(edit1_objet%),3) message "Quantième du mois en chiffres" return end_if if val(right$(text$(edit1_objet%),1))>1 text edit1_objet%,left$(text$(edit1_objet%),3) message "Quantième du mois sur 2 chiffres" return end_if end_if
if len(text$(edit1_objet%))=5 if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,left$(text$(edit1_objet%),4) message "Quantième du mois en chiffres" return end_if if val(right$(text$(edit1_objet%),2))>12 text edit1_objet%,left$(text$(edit1_objet%),3) message "Le quantième du mois ne peut être supérieur à 12" return end_if if val(left$(text$(edit1_objet%),2))>30 and (val(mid$(text$(edit1_objet%),4,2))=4 or val(mid$(text$(edit1_objet%),4,2))=6 or val(mid$(text$(edit1_objet%),4,2))=9 or val(mid$(text$(edit1_objet%),4,2))=11) if val(mid$(text$(edit1_objet%),4,2))=4 then message "Le mois d'avril ne compte que 30 jours." if val(mid$(text$(edit1_objet%),4,2))=6 then message "Le mois de juin ne compte que 30 jours." if val(mid$(text$(edit1_objet%),4,2))=9 then message "Le mois de septembre ne compte que 30 jours." if val(mid$(text$(edit1_objet%),4,2))=11 then message "Le mois de novembre ne compte que 30 jours." return end_if end_if
if mid$(text$(edit1_objet%),6,1)<>"/" and len(text$(edit1_objet%))= 6 text edit1_objet%,left$(text$(edit1_objet%),5) + "/" message "Le signe de séparation / doit être accolé aux chiffres" return end_if if len(text$(edit1_objet%))=7 if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,left$(text$(edit1_objet%),6) message "Quantième de l'année en chiffres" return end_if if val(right$(text$(edit1_objet%),1))>val(mil$) text edit1_objet%,left$(text$(edit1_objet%),6) message "Le quantième de l'année ne peut être supérieur à "+annee$ return end_if
end_if if len(text$(edit1_objet%))=8 if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,left$(text$(edit1_objet%),7) message "Quantième de l'année en chiffres" return end_if
end_if if len(text$(edit1_objet%))=9 if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,left$(text$(edit1_objet%),8) message "Quantième de l'année en chiffres" return end_if
end_if if len(text$(edit1_objet%))=10 annee% = val(right$(text$(edit1_objet%),4)) bissex% = annee% - int((annee% / 4))*4 bissex100% = annee% - int((annee% / 100))*100 bissex400% = annee% - int((annee% / 400))*400
if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="." text edit1_objet%,left$(text$(edit1_objet%),9) message "Quantième de l'année en chiffres" return end_if if val(right$(text$(edit1_objet%),4))>val(annee$) text edit1_objet%,left$(text$(edit1_objet%),6) message "Le quantième de l'année ne peut être supérieur à "+annee$ return end_if if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>28 and bissex% > 0 message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 28 jours." return end_if if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>29 and bissex% = 0 message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 29 jours." return end_if if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>28 and bissex100% = 0 and bissex400% > 0 message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 28 jours." return end_if if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>29 and bissex100% = 0 and bissex400% = 0 message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 29 jours." return end_if
end_if if len(text$(edit1_objet%))>10 text edit1_objet%,left$(text$(edit1_objet%),10) return end_if
if len(text$(edit1_objet%))=10 if val(left$(text$(edit1_objet%),2))>30 and (val(mid$(text$(edit1_objet%),4,2))=4 or val(mid$(text$(edit1_objet%),4,2))=6 or val(mid$(text$(edit1_objet%),4,2))=9 or val(mid$(text$(edit1_objet%),4,2))=11) if val(mid$(text$(edit1_objet%),4,2))=4 then message "Le mois d'avril ne compte que 30 jours." if val(mid$(text$(edit1_objet%),4,2))=6 then message "Le mois de juin ne compte que 30 jours." if val(mid$(text$(edit1_objet%),4,2))=9 then message "Le mois de septembre ne compte que 30 jours." if val(mid$(text$(edit1_objet%),4,2))=11 then message "Le mois de novembre ne compte que 30 jours." end_if
mois$ = mid$(date$,4,2) jour$ = left$(date$,2) jour_util$ = left$(text$(edit1_objet%),2) mois_util$ = mid$(text$(edit1_objet%),4,2) annee_util$ = right$(text$(edit1_objet%),4)
aujourdhui$ = annee$+mois$+jour$ date_util$ = annee_util$+mois_util$+jour_util$
if val(date_util$) > val(aujourdhui$) then message "Vous avez entré une date du futur !"
return end_if
return
C'est l'occasion pour moi de vous remercier tous... Modification du code le 26/05/2012 : Le code précédent posait problème lors de corrections de la date.
Dernière édition par ambroise le Sam 26 Mai 2012 - 11:09, édité 4 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: contrôler contenu d'un edit Ven 25 Mai 2012 - 18:26 | |
| J'ai gagné le code gratuit,
1900 n'a pas de 29 février. Bon, j'ai aucun mérite c'est JL35 qui me l'a fait découvrir. Tu trouvera la formule dans l'autre poste.
Je vois que tu commences à t'accrocher dur à Panoramic, continu....
A+ | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: contrôler contenu d'un edit Ven 25 Mai 2012 - 18:31 | |
| Oui, tu as raison... Faut que je me remette au boulot...
J'ai corrigé dans le code ci-dessus.... | |
| | | Contenu sponsorisé
| Sujet: Re: contrôler contenu d'un edit | |
| |
| | | | contrôler contenu d'un edit | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |