Problème codage

Résolu
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009 - 4 nov. 2007 à 10:44
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 - 5 nov. 2007 à 10:51
Bonjour,

Tout d'abord une petite présentation : Je suis étudiant en BTS IRIS premiere année et il nous a été demandé d'écrire plusieurs fonctions durant ces vacances. Le projet à réaliser est un programme vous indiquant votre Signe Zodiaqual, votre jour de Naissance, des informations complémentaires aux signes ainsi que l'image de celui en cours, ...

Je m'adresse à vous car je bute sur la syntaxe/l'écriture d'une des dernière avant de relier le projet dans sa totalité.
Il s'agit de la toute dernière partie avant réalisation finale du projet...

Ce même code qui est réalisé dans un Module, elle est appelé par :

Option Explicit
---------------------------------------------------------------------------------------------------------------------------
Private Sub CommandCalculerJourNaissance_Click()
    LabelCalculerJourNaissance.Caption = Utilitaires.CalculerJourNaissance(TextJour.Text, TextMois.Text, TextAnnee.Text)
End Sub

Voici maintenant la partie du code concernant mon problème :

Option Explicit
---------------------------------------------------------------------------------------------------------------------------

' CalculerJourNaissance
' INPUT : Jour, Mois, Annee de naissance.
' OUTPUT : Jour de naissance.
' FONCTION : Retourne le jour de la semaine de naissance a partir d'une date de naissance.

Public Function CalculerJourNaissance(p_strJour As String, p_strMois As String, p_strAnnee As String) As String

FormatDateTime(p_strJour/p_strMois/p_strAnnee, vbLongDate) = Mid(CalculerJourNaissance, p_strJour, InStr(7, p_strJour, p_strJour))

End Function' CalculerJourNaissance

Je n'ai pas réussi à décrypter les consignes laissées. Si vous pouviez m'orienter sur les erreurs que j'ai écrites, je vous en serai très reconnaissant.
Je pense que le problème se situe au niveau de la fonction Mid que je n'arrive pas à exploiter, je ne comprend pas sa syntaxe afin de l'utiliser dans ce cas ci.

Voici la forme de cette partie du projet.

Informations complémentaires :

CalculerJourNaissance utilise la fonction FormatDateTime. Il s’agit de lui passer une chaîne de caractères sous la forme Jour/Mois/Année (ex : 1/1/1000), avec en second paramètre le format vbLongDate, et elle retourne la date complète (ex : mercredi 1 janvier 1000). Il suffit ensuite d’utiliser la fonction Mid pour extraire la chaîne « mercredi ». Le troisième paramètre de Mid utilise la fonction InStr pour calculer la longueur de la chaîne en détectant le caractère <espace>.

20 réponses

mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 11:13
J'ai regardé, il faut écrire:

Public Function CalculerJourNaissance(p_strJour As String, p_strMois As String, p_strAnnee As String) As String

CalculerJourNaissance=FormatDateTime(p_strJour &"/"& p_strMois &"/"& p_strAnnee, vbLongDate)
End Function' CalculerJourNaissance
3
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 17:17
Plus rapide en effet si tu fais:

CalculerJourNaissance = FormatDateTime(p_strJour & "/" & p_strMois & "/" & p_strAnnee, vbLongDate)
JourNaissanceS=mid$(CalculerJourNaissance,1,InStr(CalculerJourNaissance," "))

mid$ sélectionne la partie du texte commençant au 1er caractère, et long de
InStr(....,...) qui te donne la position du premier espace dans ta chaine de départ.
3
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009
4 nov. 2007 à 17:33
  Dim JourNaissance As String
  JourNaissance = FormatDateTime(p_strJour & "/" & p_strMois & "/" & p_strAnnee, vbLongDate)
  CalculerJourNaissance = Mid$(JourNaissance, 1, InStr(JourNaissance, " "))

C'est opérationnel, encore une fois merci beaucoup ;)
3
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 11:01
Salut,

DatePart("w",p_strJour & "/" & pstr_Mois & "/" & pstrAnnee",vbMonday) te donne 1 si c'est un lundi, 2 si c'est un mardi, etc...

reste à faire:
 
journee= (le truc en dessus)
select case journee
case 1
TaFonction="Lundi"
case2
TaFonction="Mardi"
case3
............
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 11:03
(Je te donne ça parce que je ne connais pas FormatDateTime, et ça marche, en attendant que quelqu'un qui connaisse la fonction vienne ;-)   )
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 nov. 2007 à 11:05
Bonjour,

Bien compliqué pour peu !

Il te te viendrait pas à l'idée d'utiliser la fonction Weekday, assortie de la fonction Fomat...,"dddd") ?

Private Sub Command1_Click()
 toto = "03/11/2007"
 MsgBox Format(WeekDay(toto), "dddd")
End Sub
0
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009
4 nov. 2007 à 11:11
Bonjour jmfmarques et mstarsup5,

Comme indiqué dans le thème, je suis un débutant. Il nous a été conseillé d'utiliser le FormatDateTime mais il est tout à fait possible d'utiliser une autre fonction.

En sachant que la date est défini par l'utilisateur, allant du 1/1/1000 au 1/1/3000, j'ai regardé plusieurs algorithmes mais le codage était au delà de mes connaissances en VB.

Je vais regarder ce que vous m'avez écrit, en vous remerciant.
0
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009
4 nov. 2007 à 11:22
Merci beaucoup mstarsup5, cela fonctionne très bien. Tu viens de me débloquer ... Cela faisait 5 heures que je planchais sur des algoriythmes et des syntaxtes :D.

Encore merci !
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 11:33
Après, si tu veux extraire les différentes parties, tu peux faire

dim tableau ( ) as string
tableau=split(CalculerJourNaissance," ")
tu auras tableau(0)="Lundi", tableau(1)="1", tableau(2)="novembre",tableau(3)="2007"
0
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009
4 nov. 2007 à 11:43
Tu m'apprends des trucs :) merci.
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 11:45
J'ai appris tout ça hier perso :p
Je touche le vb depuis bientôt 3 semaines maintenant, et j'apprends plein de trucs à lire ce forum :)
0
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009
4 nov. 2007 à 11:54
Je crois que je vais faire comme toi ... Lire ce Forum car le professeur nous enseignant le VB n'a pas vraiment de méthodes :D.

J'en ai appris plus en faisant des recherches pour réaliser le projet qu'en suivant ses cours mais bon ca c'est la pédagogie.
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 12:01
Bah perso, j'ai eu 2 "cours" de 4h :-P
La prof était sympa, mais le contenu était très maigre... on avait un mini poly avec qqs fonctions qu'on a pas lu, et 11 tis exos pour apprendre à se servir un peu des textbox, combobox, picturebox, et timer, et puis c'est tout, finis les cours.
On n'a vraiment rien vu en gros, c'est sympa pour voir un peu ce que tu peux faire, mais c'est quasiment réduit à 0% des possibilités, donc vaut mieux voir ici oui.
C'est pour ça que je squatte depuis 2 semaines :)
0
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009
4 nov. 2007 à 16:51
C'est encore moi ^^

Comment récupérer le jour de Naissance.

CalculerJourNaissance = FormatDateTime(p_strJour & "/" & p_strMois & "/" & p_strAnnee, vbLongDate)

Ceci renvoi la date intégrale (exemple pour la date initiale : Mercredi 1 Janvier 1000), j'aimerai juste renvoyer le jour.

Le projet en Image :
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 17:00
Re salut..

dim JourNaissance as integer
dim JourNaissanceS as string
JourNaissance=weekday(p_strJour & "/" & p_strMois & "/" & p_strAnnee)
select case JourNaissance
case 1
JourNaissanceS="Lundi"
case 2
JourNaissanceS="Mardi"
case3
.............

End Select
msgbox JourNaissanceS

ou alors tu pars du
CalculerJourNaissance = FormatDateTime(p_strJour & "/" & p_strMois & "/" & p_strAnnee, vbLongDate)

que tu as fait, et tu extrais le début de la chaine avant le premier " ".
0
lomatic Messages postés 37 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 9 octobre 2009
4 nov. 2007 à 17:04
Il ne faut pas que je l'affiche dans une message box mais dans le Label juste a coté de "vous êtes né un".

Je vais essayer le select case et je reviens :)
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
4 nov. 2007 à 17:07
Si il faut que tu l'affiches dans un label, affiche le dans un label et vire le message box, il est là que pour voir/te montrer que ça fonctionne.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 nov. 2007 à 09:16
Hé bé !...

Je l'ai dit plus haut et vais le répéter (une dernière fois...)

Une seule ligne , en vb

MsgBox Format(WeekDay(ladate), "dddd")
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
5 nov. 2007 à 10:04
Bonjour,

jmfmarques, comment fonctionne la commance format?
Je suis bien d'accord que ça marche, et que c'est mieux que les deux lignes du dessus, vu que la commande à été faite pour ça, je me rappelais que tu avais dit de faire un weekday, mais j'avais oublié le 'format' ci dessus.
Mais comment ça marche?
A quoi correspond le "dddd"?
Y à-t-il d'autres fonctions?
On s'en sert uniquement pour les dates, ou pour d'autres choses?
Merci.
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
5 nov. 2007 à 10:51
Trouvé sur msdn, merci
0
Rejoignez-nous