probleme avec champ date résolu

probleme avec champ date résolu - VB/VBA/VBS - Programmation

Marsh Posté le 05-05-2006 à 11:34:17    

j'aimerais tester des valeurs date car l'utilisateur doit selectionner un laps de tps et j'aimerai verifier si sa saisie est correct :  
par exemple la selection de 10606 en premier avec 240506 doit generer un message d'erreur
 
comment faire ?


Message édité par GillooZ le 09-05-2006 à 14:10:30
Reply

Marsh Posté le 05-05-2006 à 11:34:17   

Reply

Marsh Posté le 06-05-2006 à 15:41:26    

Ta question demanderait sans doute un peu plus de précision pour une réponse pertinente, en particulier sur le contexte dans lequel tu travailles.
 
Pour avancer néanmoins, tu devrais pouvoir utiliser les fonctions IsDate et DateValue
 
Par exemple :
IsDate("21 janvier 2006" ) revoie true : c'est bien une date
De même que IsDate("21/01/2006" )
Par contre IsDate("21012006" ) renvoie false (pas de séparateur valide de date).
Charge à toi d'ajouter des séparateurs si tu ne veux pas obliger ton utilisateur à les entrer, mais c'est dans ce cas un peu plus "touchy"  ;)  
 
Une fois que tu t'es assuré que la chaine entrée était bien une date, tu peux la convertir dans une variable de type Date.
 

Code :
  1. Dim maChaine As String
  2.     Dim maDate As Date
  3.    
  4.     If Not IsDate(maChaine) Then
  5.         MsgBox "Date saisie incorrecte"
  6.         Exit Sub
  7.     End If
  8.    
  9.     maDate = DateValue(maChaine)


 
Les variables de type date sont des nombres, le jour étant la partie entière, et l'heure la partie décimale.
Une fois converties en variables date, tu peux donc très aisément vérifier que la date de fin est bien postérieure à celle de début en faisant une simple comparaison sur les date, et calculer le laps de temps écoulé entre les deux par différence.
 
 

Code :
  1. Dim maDateInitiale As Date
  2.     Dim maDateFinale As Date
  3.    
  4.     maDateInitiale = DateValue("01/06/06" )
  5.     maDateFinale = DateValue("24/05/06" )
  6.    
  7.     If maDateFinale < maDateInitiale Then
  8.         MsgBox "La date finale doit être postérieure à la date initiale"
  9.         Exit Sub
  10.     End If
  11.  
  12.     MsgBox "Durée : " & (maDateFinale - maDateInitiale)

Reply

Marsh Posté le 09-05-2006 à 12:17:46    

maDateInitiale = DateValue(ListBox3.Value)    
maDateFinale = DateValue(ListBox4.Value)
 
quand je fais ca ca me dit incompatibilité de type avec la valeur de ma listbox als que les données insérées dedans sotn bien du type date  
les dates ke je prends par exemple sont : 18/05/2006 et 12/05/2006
 
j'aimerai k'il me genere un message d'erreur qd la date initiale est superieur a la date finale comme Bidgii l'as mis dans le post précedent  
:/

Reply

Marsh Posté le 09-05-2006 à 13:22:56    

Gillooz, rassure moi, tu utilises un peu l'aide en ligne de VBA ?
Ça te permettrait de voir comment utilsier ces fonctions de manière correcte par exemple.
Ça te permettrait aussi de voir qu'il existe une fonction CDate() qui permet de convertir une valeur en date si le format est correct.

Reply

Marsh Posté le 09-05-2006 à 13:56:53    

als de 1  
sur le pc ou je programme g pas le net et sur le pc avec le net g pas excel
de 2
apres sur mon pc ou je programme j'ai pas l'aide sur excel et g pas de cd d'install
de 3
j'ai jamais codé en vba avant le debut du mois d'avril
de 4
les fonctions je pe pas les inventer ni savoir comment elles marchent
de 5  
si ca vous soule de m'aider vous pouvez le dire
de 6  
j'ai pas le temps de consulter tous les tutaux c pour ca que je m'adresse a vous directement

Reply

Marsh Posté le 09-05-2006 à 14:09:15    

j'ai résolu mon probleme merci

Reply

Marsh Posté le 09-05-2006 à 15:44:06    

De 1, si ton PC où tu programmes a Excel, alors il y a une doc en ligne.
De 2, si tu dois programmer, assure toi d'avoir un environnement de travail qui permet de le faire, et si nécessaire dit à ton chef de t'en donner les moyens (dis lui de passer sur le forum que je l'engueule s'il faut :p)
De 3, justement il faudrait démarrer par le début et lire la doc le plus possible (même celle en ligne)
De 4, pas question d'inventer; on est tous passé par là, sauf que certaines fonctions de base sont très faciles à trouver pour peu que tu lises la doc
De 5, quand ça me saoule, je le dis, voire je passe mon chemin, mais là j'aimerais surtout que tu apprennes certaines choses sans lesquellestu vas droit dans le mur.
De 6, il va pourtant falloir prendre le temps car le forum ne pourra pas toujours avoir les réponses que tu veux. Et il arrive que ça soit nous qui lisions les tutaux à ta place pour te répondre, alors ça risque de pas durer.
 
Ceci dit persévère, ça va aller mieux.

Reply

Marsh Posté le 09-05-2006 à 15:46:42    

je sais bien mais sur le pc ou je programme, l'aide bug qd je la lance g aucune reponse pour n'importe quel champ :/
apres pr le reste je vais arreter de me plaindre mais j'avance :) (lentement certes mais ca progresse ^^)
merci de repondre :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed