Bonjour à tous !
J`utilise VB5 et je dois me faire une application qui calcule le nombre de
jour entre 2 dates.
J`avais penser utiliser l`outil Calendar avec sa calendar.value mais le
résultat est une chaine de caractere. Comment faire pour faire une opération
mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
j`aimerais le faire avec VB5.
Bonjour à tous !
J`utilise VB5 et je dois me faire une application qui calcule le nombre de
jour entre 2 dates.
J`avais penser utiliser l`outil Calendar avec sa calendar.value mais le
résultat est une chaine de caractere. Comment faire pour faire une opération
mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
j`aimerais le faire avec VB5.
Bonjour à tous !
J`utilise VB5 et je dois me faire une application qui calcule le nombre de
jour entre 2 dates.
J`avais penser utiliser l`outil Calendar avec sa calendar.value mais le
résultat est une chaine de caractere. Comment faire pour faire une opération
mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
j`aimerais le faire avec VB5.
Bonjour à tous !
J`utilise VB5 et je dois me faire une application qui calcule le nombre de
jour entre 2 dates.
J`avais penser utiliser l`outil Calendar avec sa calendar.value mais le
résultat est une chaine de caractere. Comment faire pour faire une
opération
mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
j`aimerais le faire avec VB5.
Merci
Claude
Bonjour à tous !
J`utilise VB5 et je dois me faire une application qui calcule le nombre de
jour entre 2 dates.
J`avais penser utiliser l`outil Calendar avec sa calendar.value mais le
résultat est une chaine de caractere. Comment faire pour faire une
opération
mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
j`aimerais le faire avec VB5.
Merci
Claude
Bonjour à tous !
J`utilise VB5 et je dois me faire une application qui calcule le nombre de
jour entre 2 dates.
J`avais penser utiliser l`outil Calendar avec sa calendar.value mais le
résultat est une chaine de caractere. Comment faire pour faire une
opération
mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
j`aimerais le faire avec VB5.
Merci
Claude
Bonjour Jacques!
J`utilise la librairie Microsoft Calendar components V 10.0 pour aller
choisir les dates.
La propriétés calendar1.value est-elle numerique ou bien chaine de
caracteres? Où puis-je trouver ce renseignement !
VB5 contient la fonction Datediff mais le résultat est toujours 0, c`est
pourquoi je me demande si calendar1.value est chaine. Si oui, comment
puis-je la convertir en numérique afin d`y effectuer l`opération
mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
merci infiniment.....
Claude
"Jacques93" wrote in message
news:
| Bonjour Claude,
| Claude a écrit :
| > Bonjour à tous !
| >
| > J`utilise VB5 et je dois me faire une application qui calcule le
nombre
de
| > jour entre 2 dates.
| > J`avais penser utiliser l`outil Calendar avec sa calendar.value mais
le
| > résultat est une chaine de caractere. Comment faire pour faire une
opération
| > mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
| > j`aimerais le faire avec VB5.
| >
|
| Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
|
| MsgBox DateDiff("d", d1, d2)
|
| Sinon
|
| MsgBox d2 - d1
|
| Avec d2 >= d1
|
| En fait c'est comme sous Excel
|
| --
| Cordialement,
|
| Jacques.
Bonjour Jacques!
J`utilise la librairie Microsoft Calendar components V 10.0 pour aller
choisir les dates.
La propriétés calendar1.value est-elle numerique ou bien chaine de
caracteres? Où puis-je trouver ce renseignement !
VB5 contient la fonction Datediff mais le résultat est toujours 0, c`est
pourquoi je me demande si calendar1.value est chaine. Si oui, comment
puis-je la convertir en numérique afin d`y effectuer l`opération
mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
merci infiniment.....
Claude
"Jacques93" <jacques@Nospam> wrote in message
news:uKbQ1zKTGHA.4608@tk2msftngp13.phx.gbl...
| Bonjour Claude,
| Claude a écrit :
| > Bonjour à tous !
| >
| > J`utilise VB5 et je dois me faire une application qui calcule le
nombre
de
| > jour entre 2 dates.
| > J`avais penser utiliser l`outil Calendar avec sa calendar.value mais
le
| > résultat est une chaine de caractere. Comment faire pour faire une
opération
| > mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
| > j`aimerais le faire avec VB5.
| >
|
| Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
|
| MsgBox DateDiff("d", d1, d2)
|
| Sinon
|
| MsgBox d2 - d1
|
| Avec d2 >= d1
|
| En fait c'est comme sous Excel
|
| --
| Cordialement,
|
| Jacques.
Bonjour Jacques!
J`utilise la librairie Microsoft Calendar components V 10.0 pour aller
choisir les dates.
La propriétés calendar1.value est-elle numerique ou bien chaine de
caracteres? Où puis-je trouver ce renseignement !
VB5 contient la fonction Datediff mais le résultat est toujours 0, c`est
pourquoi je me demande si calendar1.value est chaine. Si oui, comment
puis-je la convertir en numérique afin d`y effectuer l`opération
mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
merci infiniment.....
Claude
"Jacques93" wrote in message
news:
| Bonjour Claude,
| Claude a écrit :
| > Bonjour à tous !
| >
| > J`utilise VB5 et je dois me faire une application qui calcule le
nombre
de
| > jour entre 2 dates.
| > J`avais penser utiliser l`outil Calendar avec sa calendar.value mais
le
| > résultat est une chaine de caractere. Comment faire pour faire une
opération
| > mathématique sur une chaine de caractere? J`ai réussi avec Excell mais
| > j`aimerais le faire avec VB5.
| >
|
| Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
|
| MsgBox DateDiff("d", d1, d2)
|
| Sinon
|
| MsgBox d2 - d1
|
| Avec d2 >= d1
|
| En fait c'est comme sous Excel
|
| --
| Cordialement,
|
| Jacques.
Merci pour tes explications mais elles sont un peu sombres pour moi.
Voici l`idée que j`aimerais faire...
L`utilisateur clique sur une premiere date sur le calendrier, puis sur une
deuxieme.
Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la difference
de
jour entre ces 2 dates !
C`est aussi simple que cela !
Tu peux m`aider?
En te remerciant d`avance
Claude
"X" wrote in message news:
| Salut,
|
| La propriété est numérique ou date (texte date), selon ce que tu
veux,
| voici, j'ai testé:
|
| Si ton code (dans un bouton 1) est ça:
| Sub Command1_Click()
| Dim ladate As Double
| Dim date_a As Date
| Dim date_b As Date
| Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
| date_a = "21/03/2006"
| Text1 = Text1 & date_a & vbCrLf
| Text1 = Text1 & CDbl(date_a) & vbCrLf
| date_a = CDate(38799)
| Text1 = Text1 & date_a & vbCrLf
| date_a = "21/03/2006"
| date_b = "23/03/2006"
| ladate = date_b - date_a
| Text1 = Text1 & ladate & vbCrLf
| End Sub
|
|
| Ça te donne en mettant le calendar au 1/1/1900
| 2
| 21/03/2006
| 38797
| 23/03/2006
| 2
|
| En conséquence (tu as vu ci-dessus comment on passait du numérique à la
| date, et réciproquement):
| - En numérique, calendar commence au 31/12/1899 = jour 1
| - Le 21/03/2006 est le jour 38797
| - Le 23/03/2006 est le jour 38799
| donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
|
|
| En conclusions:
|
| - Pour passer d'une date texte à une date numérique:
| Dim ladate As Double
| Dim date_a As Date
| ladate = CDbl(Calendar1.Value)
|
| - Pour passer d'une date numérique à une date texte:
| Dim ladate As Double
| Dim date_a As Date
| date_a = CDate(38799)
|
| - pour calculer l'écart entre 2 dates texte
| dim numérique as double
| dim date1 as date
| dim date2 as date
| date1="21/03/2006"
| date2="23/03/2006"
| numerique = date2 - date1 (= 2)
|
| Et si tu représente une date avec une heure, ce sera alors une décimal,
| comme déjà épondu:
| nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
| j,s
|
| Si tu utilises les fonctions indiquées par Jacques ça donnera la même
chose,
| à toi de voir si tu veux faire du calcul ou utiliser les fonctions
| prédéfinies...
|
| Est-ce clair, si c'est sombre, envoie, je te fais !
|
| ------
| Site logiciels
| http://irolog.free.fr
| http://irolog.free.fr/ecrire/index.htm
| Site perso
| http://irolog.free.fr/joe/index.htm
| Principe d'utilisation des news Groups
| http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| ------------------------------------------------------------------------------------
| "Claude" a écrit dans le message de news:
|
| > Bonjour Jacques!
| >
| > J`utilise la librairie Microsoft Calendar components V 10.0 pour aller
| > choisir les dates.
| > La propriétés calendar1.value est-elle numerique ou bien chaine de
| > caracteres? Où puis-je trouver ce renseignement !
| > VB5 contient la fonction Datediff mais le résultat est toujours 0,
c`est
| > pourquoi je me demande si calendar1.value est chaine. Si oui, comment
| > puis-je la convertir en numérique afin d`y effectuer l`opération
| > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
| >
| > merci infiniment.....
| >
| > Claude
| >
| > "Jacques93" wrote in message
| > news:
| > | Bonjour Claude,
| > | Claude a écrit :
| > | > Bonjour à tous !
| > | >
| > | > J`utilise VB5 et je dois me faire une application qui calcule le
| > nombre
| > de
| > | > jour entre 2 dates.
| > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
mais
| > le
| > | > résultat est une chaine de caractere. Comment faire pour faire une
| > opération
| > | > mathématique sur une chaine de caractere? J`ai réussi avec Excell
mais
| > | > j`aimerais le faire avec VB5.
| > | >
| > |
| > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
| > |
| > | MsgBox DateDiff("d", d1, d2)
| > |
| > | Sinon
| > |
| > | MsgBox d2 - d1
| > |
| > | Avec d2 >= d1
| > |
| > | En fait c'est comme sous Excel
| > |
| > | --
| > | Cordialement,
| > |
| > | Jacques.
| >
| >
|
|
Merci pour tes explications mais elles sont un peu sombres pour moi.
Voici l`idée que j`aimerais faire...
L`utilisateur clique sur une premiere date sur le calendrier, puis sur une
deuxieme.
Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la difference
de
jour entre ces 2 dates !
C`est aussi simple que cela !
Tu peux m`aider?
En te remerciant d`avance
Claude
"X" <X@Y.Z> wrote in message news:u6VBaaVTGHA.5500@TK2MSFTNGP12.phx.gbl...
| Salut,
|
| La propriété est numérique ou date (texte date), selon ce que tu
veux,
| voici, j'ai testé:
|
| Si ton code (dans un bouton 1) est ça:
| Sub Command1_Click()
| Dim ladate As Double
| Dim date_a As Date
| Dim date_b As Date
| Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
| date_a = "21/03/2006"
| Text1 = Text1 & date_a & vbCrLf
| Text1 = Text1 & CDbl(date_a) & vbCrLf
| date_a = CDate(38799)
| Text1 = Text1 & date_a & vbCrLf
| date_a = "21/03/2006"
| date_b = "23/03/2006"
| ladate = date_b - date_a
| Text1 = Text1 & ladate & vbCrLf
| End Sub
|
|
| Ça te donne en mettant le calendar au 1/1/1900
| 2
| 21/03/2006
| 38797
| 23/03/2006
| 2
|
| En conséquence (tu as vu ci-dessus comment on passait du numérique à la
| date, et réciproquement):
| - En numérique, calendar commence au 31/12/1899 = jour 1
| - Le 21/03/2006 est le jour 38797
| - Le 23/03/2006 est le jour 38799
| donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
|
|
| En conclusions:
|
| - Pour passer d'une date texte à une date numérique:
| Dim ladate As Double
| Dim date_a As Date
| ladate = CDbl(Calendar1.Value)
|
| - Pour passer d'une date numérique à une date texte:
| Dim ladate As Double
| Dim date_a As Date
| date_a = CDate(38799)
|
| - pour calculer l'écart entre 2 dates texte
| dim numérique as double
| dim date1 as date
| dim date2 as date
| date1="21/03/2006"
| date2="23/03/2006"
| numerique = date2 - date1 (= 2)
|
| Et si tu représente une date avec une heure, ce sera alors une décimal,
| comme déjà épondu:
| nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
| j,s
|
| Si tu utilises les fonctions indiquées par Jacques ça donnera la même
chose,
| à toi de voir si tu veux faire du calcul ou utiliser les fonctions
| prédéfinies...
|
| Est-ce clair, si c'est sombre, envoie, je te fais !
|
| ------
| Site logiciels
| http://irolog.free.fr
| http://irolog.free.fr/ecrire/index.htm
| Site perso
| http://irolog.free.fr/joe/index.htm
| Principe d'utilisation des news Groups
| http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| ------------------------------------------------------------------------------------
| "Claude" <Claude@Claude.Claude> a écrit dans le message de news:
| OMNdPbUTGHA.4616@TK2MSFTNGP10.phx.gbl...
| > Bonjour Jacques!
| >
| > J`utilise la librairie Microsoft Calendar components V 10.0 pour aller
| > choisir les dates.
| > La propriétés calendar1.value est-elle numerique ou bien chaine de
| > caracteres? Où puis-je trouver ce renseignement !
| > VB5 contient la fonction Datediff mais le résultat est toujours 0,
c`est
| > pourquoi je me demande si calendar1.value est chaine. Si oui, comment
| > puis-je la convertir en numérique afin d`y effectuer l`opération
| > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
| >
| > merci infiniment.....
| >
| > Claude
| >
| > "Jacques93" <jacques@Nospam> wrote in message
| > news:uKbQ1zKTGHA.4608@tk2msftngp13.phx.gbl...
| > | Bonjour Claude,
| > | Claude a écrit :
| > | > Bonjour à tous !
| > | >
| > | > J`utilise VB5 et je dois me faire une application qui calcule le
| > nombre
| > de
| > | > jour entre 2 dates.
| > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
mais
| > le
| > | > résultat est une chaine de caractere. Comment faire pour faire une
| > opération
| > | > mathématique sur une chaine de caractere? J`ai réussi avec Excell
mais
| > | > j`aimerais le faire avec VB5.
| > | >
| > |
| > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
| > |
| > | MsgBox DateDiff("d", d1, d2)
| > |
| > | Sinon
| > |
| > | MsgBox d2 - d1
| > |
| > | Avec d2 >= d1
| > |
| > | En fait c'est comme sous Excel
| > |
| > | --
| > | Cordialement,
| > |
| > | Jacques.
| >
| >
|
|
Merci pour tes explications mais elles sont un peu sombres pour moi.
Voici l`idée que j`aimerais faire...
L`utilisateur clique sur une premiere date sur le calendrier, puis sur une
deuxieme.
Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la difference
de
jour entre ces 2 dates !
C`est aussi simple que cela !
Tu peux m`aider?
En te remerciant d`avance
Claude
"X" wrote in message news:
| Salut,
|
| La propriété est numérique ou date (texte date), selon ce que tu
veux,
| voici, j'ai testé:
|
| Si ton code (dans un bouton 1) est ça:
| Sub Command1_Click()
| Dim ladate As Double
| Dim date_a As Date
| Dim date_b As Date
| Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
| date_a = "21/03/2006"
| Text1 = Text1 & date_a & vbCrLf
| Text1 = Text1 & CDbl(date_a) & vbCrLf
| date_a = CDate(38799)
| Text1 = Text1 & date_a & vbCrLf
| date_a = "21/03/2006"
| date_b = "23/03/2006"
| ladate = date_b - date_a
| Text1 = Text1 & ladate & vbCrLf
| End Sub
|
|
| Ça te donne en mettant le calendar au 1/1/1900
| 2
| 21/03/2006
| 38797
| 23/03/2006
| 2
|
| En conséquence (tu as vu ci-dessus comment on passait du numérique à la
| date, et réciproquement):
| - En numérique, calendar commence au 31/12/1899 = jour 1
| - Le 21/03/2006 est le jour 38797
| - Le 23/03/2006 est le jour 38799
| donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
|
|
| En conclusions:
|
| - Pour passer d'une date texte à une date numérique:
| Dim ladate As Double
| Dim date_a As Date
| ladate = CDbl(Calendar1.Value)
|
| - Pour passer d'une date numérique à une date texte:
| Dim ladate As Double
| Dim date_a As Date
| date_a = CDate(38799)
|
| - pour calculer l'écart entre 2 dates texte
| dim numérique as double
| dim date1 as date
| dim date2 as date
| date1="21/03/2006"
| date2="23/03/2006"
| numerique = date2 - date1 (= 2)
|
| Et si tu représente une date avec une heure, ce sera alors une décimal,
| comme déjà épondu:
| nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
| j,s
|
| Si tu utilises les fonctions indiquées par Jacques ça donnera la même
chose,
| à toi de voir si tu veux faire du calcul ou utiliser les fonctions
| prédéfinies...
|
| Est-ce clair, si c'est sombre, envoie, je te fais !
|
| ------
| Site logiciels
| http://irolog.free.fr
| http://irolog.free.fr/ecrire/index.htm
| Site perso
| http://irolog.free.fr/joe/index.htm
| Principe d'utilisation des news Groups
| http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| ------------------------------------------------------------------------------------
| "Claude" a écrit dans le message de news:
|
| > Bonjour Jacques!
| >
| > J`utilise la librairie Microsoft Calendar components V 10.0 pour aller
| > choisir les dates.
| > La propriétés calendar1.value est-elle numerique ou bien chaine de
| > caracteres? Où puis-je trouver ce renseignement !
| > VB5 contient la fonction Datediff mais le résultat est toujours 0,
c`est
| > pourquoi je me demande si calendar1.value est chaine. Si oui, comment
| > puis-je la convertir en numérique afin d`y effectuer l`opération
| > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
| >
| > merci infiniment.....
| >
| > Claude
| >
| > "Jacques93" wrote in message
| > news:
| > | Bonjour Claude,
| > | Claude a écrit :
| > | > Bonjour à tous !
| > | >
| > | > J`utilise VB5 et je dois me faire une application qui calcule le
| > nombre
| > de
| > | > jour entre 2 dates.
| > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
mais
| > le
| > | > résultat est une chaine de caractere. Comment faire pour faire une
| > opération
| > | > mathématique sur une chaine de caractere? J`ai réussi avec Excell
mais
| > | > j`aimerais le faire avec VB5.
| > | >
| > |
| > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
| > |
| > | MsgBox DateDiff("d", d1, d2)
| > |
| > | Sinon
| > |
| > | MsgBox d2 - d1
| > |
| > | Avec d2 >= d1
| > |
| > | En fait c'est comme sous Excel
| > |
| > | --
| > | Cordialement,
| > |
| > | Jacques.
| >
| >
|
|
Salut,
En fait je n'ai pas mis de Calendar dans l'exemple, mais il te sera
facile de transposer, j'ai fait un choix par combo, car ça risquait de ne
pas marcher, nous n'avons pas la même version de VB ni la même version du
calendar, en plus ça évite un ocx de plus, et parfois la mise à jour de sa
dépendance à la main...
Il y a 2 choix, l'un avec combo à date totale, l'autre plus souple avec 3
combos (jj + mm + aaaa)...
A toi de voir si tu veux vraiment un calendar, ou ce qui t'es proposé te
suffit :o)
Voici le code, les fichiers sources sont joints, comme les objets
(justement) sont les mêmes, ça ne devrait pas trop poser de problèmes pour
faire du copier/coller, voire à lancer directement en vb5...
---------------------
' <> entre 2 dates : form1 : 1.0 : 22/03/06
'
' 24 OBJET A INCORPORER sur form1
' - 4 comboBox : combo1 + combo2 + combo3 + combo4
' - 6 labels : label1 + label2 + label3 + label4 + label5 + label6
' - 4 optionBoutons : option1 + option2 + option3 + option4
' - 2 textBox : text1 + text2
' - 6 boutons : command1 + command2 + command3 + command4 + command5 +
command6
' - 2 frames : frame1 + frame 2
'
' NOTE
'si utilisation de Calendar, remplacer la date obtenue par les combo
' comboX.text ou ce qui en découle, par calendarX.value
'
Option Explicit
Dim date_jour As Long
'
Sub Form_Load() ' chargement
Dim ladate As Date
Dim i As Long
'
Combo1.Clear ' mettre combo1.style = 2 POSSIBILITE 1
ladate = "01/01/1970" ' date inférieure
For i = 0 To 20000 ' date de fin = date de départ + 20.000 jours
Combo1.AddItem ladate ' met date dans combo
ladate = ladate + 1 ' date ++
If Date = ladate Then date_jour = i + 1 ' date du jour
Next i
Combo1.ListIndex = date_jour ' positionne date du jour
'
Combo2.Clear ' mettre les 3 combos.style = 2 POSSIBILITE 2
Combo3.Clear
Combo4.Clear
For i = 1 To 31
Combo2.AddItem Format(i, "00")
If i < 13 Then Combo3.AddItem Format(i, "00")
Next i
'
For i = 1900 To 2099
Combo4.AddItem i
Next i
'
Combo2.ListIndex = Day(Date) - 1 ' positionne date du jour
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
'
Option1.Value = True ' POSSIBILITES 1 + 2
Option3.Value = True
Label2.Caption = ""
Label3.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
Text1 = ""
Text2 = ""
End Sub
Sub Command1_Click() 'validation de la date POSSIBILITE 1
If Option1.Value = True Then Label2.Caption = Combo1.Text
If Option1.Value = False Then Label3.Caption = Combo1.Text
End Sub
Sub Command3_Click() 'date du jour POSSIBILITE 1
Combo1.ListIndex = date_jour
End Sub
Sub Command2_Click() 'calcule la différence POSSIBILITE 1
Dim date1 As Date
Dim date2 As Date
'
If Label2.Caption = "" Or Label3.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label2.Caption
date2 = Label3.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text1 = Format(date2 - date1, "## ##0")
End Sub
Sub Command4_Click() 'validation de la date POSSIBILITE 2
Dim verif_date As Date
'
If Option3.Value = True Then
Label5.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label5.Caption
End If
'
If Option3.Value = False Then
Label6.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label6.Caption
End If
Exit Sub
'
erreur:
On Error Resume Next
MsgBox "Cette date n'existe pas, remédier ", vbExclamation
End Sub
Sub Command6_Click() 'date du jour POSSIBILITE 2
Dim jour As Date
Combo2.ListIndex = Day(Date) - 1
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
End Sub
Sub Command5_Click() 'calcule la défférence POSSIBILITE 2
Dim date1 As Date
Dim date2 As Date
'
If Label5.Caption = "" Or Label6.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label5.Caption
date2 = Label6.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text2 = Format(date2 - date1, "## ##0")
End Sub
------
fin de code
------
Site logiciels
http://irolog.free.fr
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
--------------------------------------------------------------------------
"Claude" a écrit dans le message de news:
> Merci pour tes explications mais elles sont un peu sombres pour moi.
> Voici l`idée que j`aimerais faire...
>
> L`utilisateur clique sur une premiere date sur le calendrier, puis sur
> deuxieme.
> Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la
> de
> jour entre ces 2 dates !
> C`est aussi simple que cela !
> Tu peux m`aider?
>
> En te remerciant d`avance
>
> Claude
>
> "X" wrote in message
> | Salut,
> |
> | La propriété est numérique ou date (texte date), selon ce que tu
> veux,
> | voici, j'ai testé:
> |
> | Si ton code (dans un bouton 1) est ça:
> | Sub Command1_Click()
> | Dim ladate As Double
> | Dim date_a As Date
> | Dim date_b As Date
> | Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
> | date_a = "21/03/2006"
> | Text1 = Text1 & date_a & vbCrLf
> | Text1 = Text1 & CDbl(date_a) & vbCrLf
> | date_a = CDate(38799)
> | Text1 = Text1 & date_a & vbCrLf
> | date_a = "21/03/2006"
> | date_b = "23/03/2006"
> | ladate = date_b - date_a
> | Text1 = Text1 & ladate & vbCrLf
> | End Sub
> |
> |
> | Ça te donne en mettant le calendar au 1/1/1900
> | 2
> | 21/03/2006
> | 38797
> | 23/03/2006
> | 2
> |
> | En conséquence (tu as vu ci-dessus comment on passait du numérique à
> | date, et réciproquement):
> | - En numérique, calendar commence au 31/12/1899 = jour 1
> | - Le 21/03/2006 est le jour 38797
> | - Le 23/03/2006 est le jour 38799
> | donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
> |
> |
> | En conclusions:
> |
> | - Pour passer d'une date texte à une date numérique:
> | Dim ladate As Double
> | Dim date_a As Date
> | ladate = CDbl(Calendar1.Value)
> |
> | - Pour passer d'une date numérique à une date texte:
> | Dim ladate As Double
> | Dim date_a As Date
> | date_a = CDate(38799)
> |
> | - pour calculer l'écart entre 2 dates texte
> | dim numérique as double
> | dim date1 as date
> | dim date2 as date
> | date1="21/03/2006"
> | date2="23/03/2006"
> | numerique = date2 - date1 (= 2)
> |
> | Et si tu représente une date avec une heure, ce sera alors une
> | comme déjà épondu:
> | nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
> | j,s
> |
> | Si tu utilises les fonctions indiquées par Jacques ça donnera la même
> chose,
> | à toi de voir si tu veux faire du calcul ou utiliser les fonctions
> | prédéfinies...
> |
> | Est-ce clair, si c'est sombre, envoie, je te fais !
> |
> | ------
> | Site logiciels
> | http://irolog.free.fr
> | http://irolog.free.fr/ecrire/index.htm
> | Site perso
> | http://irolog.free.fr/joe/index.htm
> | Principe d'utilisation des news Groups
> |
>
> | "Claude" a écrit dans le message de news:
> |
> | > Bonjour Jacques!
> | >
> | > J`utilise la librairie Microsoft Calendar components V 10.0 pour
> | > choisir les dates.
> | > La propriétés calendar1.value est-elle numerique ou bien chaine de
> | > caracteres? Où puis-je trouver ce renseignement !
> | > VB5 contient la fonction Datediff mais le résultat est toujours 0,
> c`est
> | > pourquoi je me demande si calendar1.value est chaine. Si oui,
> | > puis-je la convertir en numérique afin d`y effectuer l`opération
> | > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
> | >
> | > merci infiniment.....
> | >
> | > Claude
> | >
> | > "Jacques93" wrote in message
> | > news:
> | > | Bonjour Claude,
> | > | Claude a écrit :
> | > | > Bonjour à tous !
> | > | >
> | > | > J`utilise VB5 et je dois me faire une application qui calcule le
> | > nombre
> | > de
> | > | > jour entre 2 dates.
> | > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
> mais
> | > le
> | > | > résultat est une chaine de caractere. Comment faire pour faire
> | > opération
> | > | > mathématique sur une chaine de caractere? J`ai réussi avec
> mais
> | > | > j`aimerais le faire avec VB5.
> | > | >
> | > |
> | > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
> | > |
> | > | MsgBox DateDiff("d", d1, d2)
> | > |
> | > | Sinon
> | > |
> | > | MsgBox d2 - d1
> | > |
> | > | Avec d2 >= d1
> | > |
> | > | En fait c'est comme sous Excel
> | > |
> | > | --
> | > | Cordialement,
> | > |
> | > | Jacques.
> | >
> | >
> |
> |
>
>
Salut,
En fait je n'ai pas mis de Calendar dans l'exemple, mais il te sera
facile de transposer, j'ai fait un choix par combo, car ça risquait de ne
pas marcher, nous n'avons pas la même version de VB ni la même version du
calendar, en plus ça évite un ocx de plus, et parfois la mise à jour de sa
dépendance à la main...
Il y a 2 choix, l'un avec combo à date totale, l'autre plus souple avec 3
combos (jj + mm + aaaa)...
A toi de voir si tu veux vraiment un calendar, ou ce qui t'es proposé te
suffit :o)
Voici le code, les fichiers sources sont joints, comme les objets
(justement) sont les mêmes, ça ne devrait pas trop poser de problèmes pour
faire du copier/coller, voire à lancer directement en vb5...
---------------------
' <> entre 2 dates : form1 : 1.0 : 22/03/06
'
' 24 OBJET A INCORPORER sur form1
' - 4 comboBox : combo1 + combo2 + combo3 + combo4
' - 6 labels : label1 + label2 + label3 + label4 + label5 + label6
' - 4 optionBoutons : option1 + option2 + option3 + option4
' - 2 textBox : text1 + text2
' - 6 boutons : command1 + command2 + command3 + command4 + command5 +
command6
' - 2 frames : frame1 + frame 2
'
' NOTE
'si utilisation de Calendar, remplacer la date obtenue par les combo
' comboX.text ou ce qui en découle, par calendarX.value
'
Option Explicit
Dim date_jour As Long
'
Sub Form_Load() ' chargement
Dim ladate As Date
Dim i As Long
'
Combo1.Clear ' mettre combo1.style = 2 POSSIBILITE 1
ladate = "01/01/1970" ' date inférieure
For i = 0 To 20000 ' date de fin = date de départ + 20.000 jours
Combo1.AddItem ladate ' met date dans combo
ladate = ladate + 1 ' date ++
If Date = ladate Then date_jour = i + 1 ' date du jour
Next i
Combo1.ListIndex = date_jour ' positionne date du jour
'
Combo2.Clear ' mettre les 3 combos.style = 2 POSSIBILITE 2
Combo3.Clear
Combo4.Clear
For i = 1 To 31
Combo2.AddItem Format(i, "00")
If i < 13 Then Combo3.AddItem Format(i, "00")
Next i
'
For i = 1900 To 2099
Combo4.AddItem i
Next i
'
Combo2.ListIndex = Day(Date) - 1 ' positionne date du jour
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
'
Option1.Value = True ' POSSIBILITES 1 + 2
Option3.Value = True
Label2.Caption = ""
Label3.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
Text1 = ""
Text2 = ""
End Sub
Sub Command1_Click() 'validation de la date POSSIBILITE 1
If Option1.Value = True Then Label2.Caption = Combo1.Text
If Option1.Value = False Then Label3.Caption = Combo1.Text
End Sub
Sub Command3_Click() 'date du jour POSSIBILITE 1
Combo1.ListIndex = date_jour
End Sub
Sub Command2_Click() 'calcule la différence POSSIBILITE 1
Dim date1 As Date
Dim date2 As Date
'
If Label2.Caption = "" Or Label3.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label2.Caption
date2 = Label3.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text1 = Format(date2 - date1, "## ##0")
End Sub
Sub Command4_Click() 'validation de la date POSSIBILITE 2
Dim verif_date As Date
'
If Option3.Value = True Then
Label5.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label5.Caption
End If
'
If Option3.Value = False Then
Label6.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label6.Caption
End If
Exit Sub
'
erreur:
On Error Resume Next
MsgBox "Cette date n'existe pas, remédier ", vbExclamation
End Sub
Sub Command6_Click() 'date du jour POSSIBILITE 2
Dim jour As Date
Combo2.ListIndex = Day(Date) - 1
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
End Sub
Sub Command5_Click() 'calcule la défférence POSSIBILITE 2
Dim date1 As Date
Dim date2 As Date
'
If Label5.Caption = "" Or Label6.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label5.Caption
date2 = Label6.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text2 = Format(date2 - date1, "## ##0")
End Sub
------
fin de code
------
Site logiciels
http://irolog.free.fr
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
--------------------------------------------------------------------------
"Claude" <Claude@Claude.Claude> a écrit dans le message de news:
u267h9VTGHA.4608@tk2msftngp13.phx.gbl...
> Merci pour tes explications mais elles sont un peu sombres pour moi.
> Voici l`idée que j`aimerais faire...
>
> L`utilisateur clique sur une premiere date sur le calendrier, puis sur
> deuxieme.
> Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la
> de
> jour entre ces 2 dates !
> C`est aussi simple que cela !
> Tu peux m`aider?
>
> En te remerciant d`avance
>
> Claude
>
> "X" <X@Y.Z> wrote in message
> | Salut,
> |
> | La propriété est numérique ou date (texte date), selon ce que tu
> veux,
> | voici, j'ai testé:
> |
> | Si ton code (dans un bouton 1) est ça:
> | Sub Command1_Click()
> | Dim ladate As Double
> | Dim date_a As Date
> | Dim date_b As Date
> | Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
> | date_a = "21/03/2006"
> | Text1 = Text1 & date_a & vbCrLf
> | Text1 = Text1 & CDbl(date_a) & vbCrLf
> | date_a = CDate(38799)
> | Text1 = Text1 & date_a & vbCrLf
> | date_a = "21/03/2006"
> | date_b = "23/03/2006"
> | ladate = date_b - date_a
> | Text1 = Text1 & ladate & vbCrLf
> | End Sub
> |
> |
> | Ça te donne en mettant le calendar au 1/1/1900
> | 2
> | 21/03/2006
> | 38797
> | 23/03/2006
> | 2
> |
> | En conséquence (tu as vu ci-dessus comment on passait du numérique à
> | date, et réciproquement):
> | - En numérique, calendar commence au 31/12/1899 = jour 1
> | - Le 21/03/2006 est le jour 38797
> | - Le 23/03/2006 est le jour 38799
> | donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
> |
> |
> | En conclusions:
> |
> | - Pour passer d'une date texte à une date numérique:
> | Dim ladate As Double
> | Dim date_a As Date
> | ladate = CDbl(Calendar1.Value)
> |
> | - Pour passer d'une date numérique à une date texte:
> | Dim ladate As Double
> | Dim date_a As Date
> | date_a = CDate(38799)
> |
> | - pour calculer l'écart entre 2 dates texte
> | dim numérique as double
> | dim date1 as date
> | dim date2 as date
> | date1="21/03/2006"
> | date2="23/03/2006"
> | numerique = date2 - date1 (= 2)
> |
> | Et si tu représente une date avec une heure, ce sera alors une
> | comme déjà épondu:
> | nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
> | j,s
> |
> | Si tu utilises les fonctions indiquées par Jacques ça donnera la même
> chose,
> | à toi de voir si tu veux faire du calcul ou utiliser les fonctions
> | prédéfinies...
> |
> | Est-ce clair, si c'est sombre, envoie, je te fais !
> |
> | ------
> | Site logiciels
> | http://irolog.free.fr
> | http://irolog.free.fr/ecrire/index.htm
> | Site perso
> | http://irolog.free.fr/joe/index.htm
> | Principe d'utilisation des news Groups
> |
>
> | "Claude" <Claude@Claude.Claude> a écrit dans le message de news:
> | OMNdPbUTGHA.4616@TK2MSFTNGP10.phx.gbl...
> | > Bonjour Jacques!
> | >
> | > J`utilise la librairie Microsoft Calendar components V 10.0 pour
> | > choisir les dates.
> | > La propriétés calendar1.value est-elle numerique ou bien chaine de
> | > caracteres? Où puis-je trouver ce renseignement !
> | > VB5 contient la fonction Datediff mais le résultat est toujours 0,
> c`est
> | > pourquoi je me demande si calendar1.value est chaine. Si oui,
> | > puis-je la convertir en numérique afin d`y effectuer l`opération
> | > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
> | >
> | > merci infiniment.....
> | >
> | > Claude
> | >
> | > "Jacques93" <jacques@Nospam> wrote in message
> | > news:uKbQ1zKTGHA.4608@tk2msftngp13.phx.gbl...
> | > | Bonjour Claude,
> | > | Claude a écrit :
> | > | > Bonjour à tous !
> | > | >
> | > | > J`utilise VB5 et je dois me faire une application qui calcule le
> | > nombre
> | > de
> | > | > jour entre 2 dates.
> | > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
> mais
> | > le
> | > | > résultat est une chaine de caractere. Comment faire pour faire
> | > opération
> | > | > mathématique sur une chaine de caractere? J`ai réussi avec
> mais
> | > | > j`aimerais le faire avec VB5.
> | > | >
> | > |
> | > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
> | > |
> | > | MsgBox DateDiff("d", d1, d2)
> | > |
> | > | Sinon
> | > |
> | > | MsgBox d2 - d1
> | > |
> | > | Avec d2 >= d1
> | > |
> | > | En fait c'est comme sous Excel
> | > |
> | > | --
> | > | Cordialement,
> | > |
> | > | Jacques.
> | >
> | >
> |
> |
>
>
Salut,
En fait je n'ai pas mis de Calendar dans l'exemple, mais il te sera
facile de transposer, j'ai fait un choix par combo, car ça risquait de ne
pas marcher, nous n'avons pas la même version de VB ni la même version du
calendar, en plus ça évite un ocx de plus, et parfois la mise à jour de sa
dépendance à la main...
Il y a 2 choix, l'un avec combo à date totale, l'autre plus souple avec 3
combos (jj + mm + aaaa)...
A toi de voir si tu veux vraiment un calendar, ou ce qui t'es proposé te
suffit :o)
Voici le code, les fichiers sources sont joints, comme les objets
(justement) sont les mêmes, ça ne devrait pas trop poser de problèmes pour
faire du copier/coller, voire à lancer directement en vb5...
---------------------
' <> entre 2 dates : form1 : 1.0 : 22/03/06
'
' 24 OBJET A INCORPORER sur form1
' - 4 comboBox : combo1 + combo2 + combo3 + combo4
' - 6 labels : label1 + label2 + label3 + label4 + label5 + label6
' - 4 optionBoutons : option1 + option2 + option3 + option4
' - 2 textBox : text1 + text2
' - 6 boutons : command1 + command2 + command3 + command4 + command5 +
command6
' - 2 frames : frame1 + frame 2
'
' NOTE
'si utilisation de Calendar, remplacer la date obtenue par les combo
' comboX.text ou ce qui en découle, par calendarX.value
'
Option Explicit
Dim date_jour As Long
'
Sub Form_Load() ' chargement
Dim ladate As Date
Dim i As Long
'
Combo1.Clear ' mettre combo1.style = 2 POSSIBILITE 1
ladate = "01/01/1970" ' date inférieure
For i = 0 To 20000 ' date de fin = date de départ + 20.000 jours
Combo1.AddItem ladate ' met date dans combo
ladate = ladate + 1 ' date ++
If Date = ladate Then date_jour = i + 1 ' date du jour
Next i
Combo1.ListIndex = date_jour ' positionne date du jour
'
Combo2.Clear ' mettre les 3 combos.style = 2 POSSIBILITE 2
Combo3.Clear
Combo4.Clear
For i = 1 To 31
Combo2.AddItem Format(i, "00")
If i < 13 Then Combo3.AddItem Format(i, "00")
Next i
'
For i = 1900 To 2099
Combo4.AddItem i
Next i
'
Combo2.ListIndex = Day(Date) - 1 ' positionne date du jour
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
'
Option1.Value = True ' POSSIBILITES 1 + 2
Option3.Value = True
Label2.Caption = ""
Label3.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
Text1 = ""
Text2 = ""
End Sub
Sub Command1_Click() 'validation de la date POSSIBILITE 1
If Option1.Value = True Then Label2.Caption = Combo1.Text
If Option1.Value = False Then Label3.Caption = Combo1.Text
End Sub
Sub Command3_Click() 'date du jour POSSIBILITE 1
Combo1.ListIndex = date_jour
End Sub
Sub Command2_Click() 'calcule la différence POSSIBILITE 1
Dim date1 As Date
Dim date2 As Date
'
If Label2.Caption = "" Or Label3.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label2.Caption
date2 = Label3.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text1 = Format(date2 - date1, "## ##0")
End Sub
Sub Command4_Click() 'validation de la date POSSIBILITE 2
Dim verif_date As Date
'
If Option3.Value = True Then
Label5.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label5.Caption
End If
'
If Option3.Value = False Then
Label6.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label6.Caption
End If
Exit Sub
'
erreur:
On Error Resume Next
MsgBox "Cette date n'existe pas, remédier ", vbExclamation
End Sub
Sub Command6_Click() 'date du jour POSSIBILITE 2
Dim jour As Date
Combo2.ListIndex = Day(Date) - 1
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
End Sub
Sub Command5_Click() 'calcule la défférence POSSIBILITE 2
Dim date1 As Date
Dim date2 As Date
'
If Label5.Caption = "" Or Label6.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label5.Caption
date2 = Label6.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text2 = Format(date2 - date1, "## ##0")
End Sub
------
fin de code
------
Site logiciels
http://irolog.free.fr
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
--------------------------------------------------------------------------
"Claude" a écrit dans le message de news:
> Merci pour tes explications mais elles sont un peu sombres pour moi.
> Voici l`idée que j`aimerais faire...
>
> L`utilisateur clique sur une premiere date sur le calendrier, puis sur
> deuxieme.
> Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la
> de
> jour entre ces 2 dates !
> C`est aussi simple que cela !
> Tu peux m`aider?
>
> En te remerciant d`avance
>
> Claude
>
> "X" wrote in message
> | Salut,
> |
> | La propriété est numérique ou date (texte date), selon ce que tu
> veux,
> | voici, j'ai testé:
> |
> | Si ton code (dans un bouton 1) est ça:
> | Sub Command1_Click()
> | Dim ladate As Double
> | Dim date_a As Date
> | Dim date_b As Date
> | Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
> | date_a = "21/03/2006"
> | Text1 = Text1 & date_a & vbCrLf
> | Text1 = Text1 & CDbl(date_a) & vbCrLf
> | date_a = CDate(38799)
> | Text1 = Text1 & date_a & vbCrLf
> | date_a = "21/03/2006"
> | date_b = "23/03/2006"
> | ladate = date_b - date_a
> | Text1 = Text1 & ladate & vbCrLf
> | End Sub
> |
> |
> | Ça te donne en mettant le calendar au 1/1/1900
> | 2
> | 21/03/2006
> | 38797
> | 23/03/2006
> | 2
> |
> | En conséquence (tu as vu ci-dessus comment on passait du numérique à
> | date, et réciproquement):
> | - En numérique, calendar commence au 31/12/1899 = jour 1
> | - Le 21/03/2006 est le jour 38797
> | - Le 23/03/2006 est le jour 38799
> | donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
> |
> |
> | En conclusions:
> |
> | - Pour passer d'une date texte à une date numérique:
> | Dim ladate As Double
> | Dim date_a As Date
> | ladate = CDbl(Calendar1.Value)
> |
> | - Pour passer d'une date numérique à une date texte:
> | Dim ladate As Double
> | Dim date_a As Date
> | date_a = CDate(38799)
> |
> | - pour calculer l'écart entre 2 dates texte
> | dim numérique as double
> | dim date1 as date
> | dim date2 as date
> | date1="21/03/2006"
> | date2="23/03/2006"
> | numerique = date2 - date1 (= 2)
> |
> | Et si tu représente une date avec une heure, ce sera alors une
> | comme déjà épondu:
> | nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
> | j,s
> |
> | Si tu utilises les fonctions indiquées par Jacques ça donnera la même
> chose,
> | à toi de voir si tu veux faire du calcul ou utiliser les fonctions
> | prédéfinies...
> |
> | Est-ce clair, si c'est sombre, envoie, je te fais !
> |
> | ------
> | Site logiciels
> | http://irolog.free.fr
> | http://irolog.free.fr/ecrire/index.htm
> | Site perso
> | http://irolog.free.fr/joe/index.htm
> | Principe d'utilisation des news Groups
> |
>
> | "Claude" a écrit dans le message de news:
> |
> | > Bonjour Jacques!
> | >
> | > J`utilise la librairie Microsoft Calendar components V 10.0 pour
> | > choisir les dates.
> | > La propriétés calendar1.value est-elle numerique ou bien chaine de
> | > caracteres? Où puis-je trouver ce renseignement !
> | > VB5 contient la fonction Datediff mais le résultat est toujours 0,
> c`est
> | > pourquoi je me demande si calendar1.value est chaine. Si oui,
> | > puis-je la convertir en numérique afin d`y effectuer l`opération
> | > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
> | >
> | > merci infiniment.....
> | >
> | > Claude
> | >
> | > "Jacques93" wrote in message
> | > news:
> | > | Bonjour Claude,
> | > | Claude a écrit :
> | > | > Bonjour à tous !
> | > | >
> | > | > J`utilise VB5 et je dois me faire une application qui calcule le
> | > nombre
> | > de
> | > | > jour entre 2 dates.
> | > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
> mais
> | > le
> | > | > résultat est une chaine de caractere. Comment faire pour faire
> | > opération
> | > | > mathématique sur une chaine de caractere? J`ai réussi avec
> mais
> | > | > j`aimerais le faire avec VB5.
> | > | >
> | > |
> | > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
> | > |
> | > | MsgBox DateDiff("d", d1, d2)
> | > |
> | > | Sinon
> | > |
> | > | MsgBox d2 - d1
> | > |
> | > | Avec d2 >= d1
> | > |
> | > | En fait c'est comme sous Excel
> | > |
> | > | --
> | > | Cordialement,
> | > |
> | > | Jacques.
> | >
> | >
> |
> |
>
>
2 millions de fois merci !
Claude
"X" a écrit dans le message de
news:Salut,
En fait je n'ai pas mis de Calendar dans l'exemple, mais il te sera
facile de transposer, j'ai fait un choix par combo, car ça risquait de ne
pas marcher, nous n'avons pas la même version de VB ni la même version du
calendar, en plus ça évite un ocx de plus, et parfois la mise à jour de
sa
dépendance à la main...
Il y a 2 choix, l'un avec combo à date totale, l'autre plus souple avec 3
combos (jj + mm + aaaa)...
A toi de voir si tu veux vraiment un calendar, ou ce qui t'es proposé te
suffit :o)
Voici le code, les fichiers sources sont joints, comme les objets
(justement) sont les mêmes, ça ne devrait pas trop poser de problèmes
pour
faire du copier/coller, voire à lancer directement en vb5...
---------------------
' <> entre 2 dates : form1 : 1.0 : 22/03/06
'
' 24 OBJET A INCORPORER sur form1
' - 4 comboBox : combo1 + combo2 + combo3 + combo4
' - 6 labels : label1 + label2 + label3 + label4 + label5 + label6
' - 4 optionBoutons : option1 + option2 + option3 + option4
' - 2 textBox : text1 + text2
' - 6 boutons : command1 + command2 + command3 + command4 + command5 +
command6
' - 2 frames : frame1 + frame 2
'
' NOTE
'si utilisation de Calendar, remplacer la date obtenue par les combo
' comboX.text ou ce qui en découle, par calendarX.value
'
Option Explicit
Dim date_jour As Long
'
Sub Form_Load() ' chargement
Dim ladate As Date
Dim i As Long
'
Combo1.Clear ' mettre combo1.style = 2 POSSIBILITE 1
ladate = "01/01/1970" ' date inférieure
For i = 0 To 20000 ' date de fin = date de départ + 20.000 jours
Combo1.AddItem ladate ' met date dans combo
ladate = ladate + 1 ' date ++
If Date = ladate Then date_jour = i + 1 ' date du jour
Next i
Combo1.ListIndex = date_jour ' positionne date du jour
'
Combo2.Clear ' mettre les 3 combos.style = 2 POSSIBILITE 2
Combo3.Clear
Combo4.Clear
For i = 1 To 31
Combo2.AddItem Format(i, "00")
If i < 13 Then Combo3.AddItem Format(i, "00")
Next i
'
For i = 1900 To 2099
Combo4.AddItem i
Next i
'
Combo2.ListIndex = Day(Date) - 1 ' positionne date du jour
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
'
Option1.Value = True ' POSSIBILITES 1 + 2
Option3.Value = True
Label2.Caption = ""
Label3.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
Text1 = ""
Text2 = ""
End Sub
Sub Command1_Click() 'validation de la date POSSIBILITE 1
If Option1.Value = True Then Label2.Caption = Combo1.Text
If Option1.Value = False Then Label3.Caption = Combo1.Text
End Sub
Sub Command3_Click() 'date du jour POSSIBILITE 1
Combo1.ListIndex = date_jour
End Sub
Sub Command2_Click() 'calcule la différence POSSIBILITE 1
Dim date1 As Date
Dim date2 As Date
'
If Label2.Caption = "" Or Label3.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label2.Caption
date2 = Label3.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text1 = Format(date2 - date1, "## ##0")
End Sub
Sub Command4_Click() 'validation de la date POSSIBILITE 2
Dim verif_date As Date
'
If Option3.Value = True Then
Label5.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label5.Caption
End If
'
If Option3.Value = False Then
Label6.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label6.Caption
End If
Exit Sub
'
erreur:
On Error Resume Next
MsgBox "Cette date n'existe pas, remédier ", vbExclamation
End Sub
Sub Command6_Click() 'date du jour POSSIBILITE 2
Dim jour As Date
Combo2.ListIndex = Day(Date) - 1
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
End Sub
Sub Command5_Click() 'calcule la défférence POSSIBILITE 2
Dim date1 As Date
Dim date2 As Date
'
If Label5.Caption = "" Or Label6.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label5.Caption
date2 = Label6.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text2 = Format(date2 - date1, "## ##0")
End Sub
------
fin de code
------
Site logiciels
http://irolog.free.fr
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
--------------------------------------------------------------------------
----------"Claude" a écrit dans le message de news:
> Merci pour tes explications mais elles sont un peu sombres pour moi.
> Voici l`idée que j`aimerais faire...
>
> L`utilisateur clique sur une premiere date sur le calendrier, puis sur
une> deuxieme.
> Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la
difference> de
> jour entre ces 2 dates !
> C`est aussi simple que cela !
> Tu peux m`aider?
>
> En te remerciant d`avance
>
> Claude
>
> "X" wrote in message
news:> | Salut,
> |
> | La propriété est numérique ou date (texte date), selon ce que tu
> veux,
> | voici, j'ai testé:
> |
> | Si ton code (dans un bouton 1) est ça:
> | Sub Command1_Click()
> | Dim ladate As Double
> | Dim date_a As Date
> | Dim date_b As Date
> | Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
> | date_a = "21/03/2006"
> | Text1 = Text1 & date_a & vbCrLf
> | Text1 = Text1 & CDbl(date_a) & vbCrLf
> | date_a = CDate(38799)
> | Text1 = Text1 & date_a & vbCrLf
> | date_a = "21/03/2006"
> | date_b = "23/03/2006"
> | ladate = date_b - date_a
> | Text1 = Text1 & ladate & vbCrLf
> | End Sub
> |
> |
> | Ça te donne en mettant le calendar au 1/1/1900
> | 2
> | 21/03/2006
> | 38797
> | 23/03/2006
> | 2
> |
> | En conséquence (tu as vu ci-dessus comment on passait du numérique à
la> | date, et réciproquement):
> | - En numérique, calendar commence au 31/12/1899 = jour 1
> | - Le 21/03/2006 est le jour 38797
> | - Le 23/03/2006 est le jour 38799
> | donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
> |
> |
> | En conclusions:
> |
> | - Pour passer d'une date texte à une date numérique:
> | Dim ladate As Double
> | Dim date_a As Date
> | ladate = CDbl(Calendar1.Value)
> |
> | - Pour passer d'une date numérique à une date texte:
> | Dim ladate As Double
> | Dim date_a As Date
> | date_a = CDate(38799)
> |
> | - pour calculer l'écart entre 2 dates texte
> | dim numérique as double
> | dim date1 as date
> | dim date2 as date
> | date1="21/03/2006"
> | date2="23/03/2006"
> | numerique = date2 - date1 (= 2)
> |
> | Et si tu représente une date avec une heure, ce sera alors une
décimal,> | comme déjà épondu:
> | nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
> | j,s
> |
> | Si tu utilises les fonctions indiquées par Jacques ça donnera la même
> chose,
> | à toi de voir si tu veux faire du calcul ou utiliser les fonctions
> | prédéfinies...
> |
> | Est-ce clair, si c'est sombre, envoie, je te fais !
> |
> | ------
> | Site logiciels
> | http://irolog.free.fr
> | http://irolog.free.fr/ecrire/index.htm
> | Site perso
> | http://irolog.free.fr/joe/index.htm
> | Principe d'utilisation des news Groups
> |
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm>
| --------------------------------------------------------------------------
----------> | "Claude" a écrit dans le message de news:
> |
> | > Bonjour Jacques!
> | >
> | > J`utilise la librairie Microsoft Calendar components V 10.0 pour
aller> | > choisir les dates.
> | > La propriétés calendar1.value est-elle numerique ou bien chaine de
> | > caracteres? Où puis-je trouver ce renseignement !
> | > VB5 contient la fonction Datediff mais le résultat est toujours 0,
> c`est
> | > pourquoi je me demande si calendar1.value est chaine. Si oui,
comment> | > puis-je la convertir en numérique afin d`y effectuer l`opération
> | > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
> | >
> | > merci infiniment.....
> | >
> | > Claude
> | >
> | > "Jacques93" wrote in message
> | > news:
> | > | Bonjour Claude,
> | > | Claude a écrit :
> | > | > Bonjour à tous !
> | > | >
> | > | > J`utilise VB5 et je dois me faire une application qui calcule
> le
> | > nombre
> | > de
> | > | > jour entre 2 dates.
> | > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
> mais
> | > le
> | > | > résultat est une chaine de caractere. Comment faire pour faire
une> | > opération
> | > | > mathématique sur une chaine de caractere? J`ai réussi avec
Excell> mais
> | > | > j`aimerais le faire avec VB5.
> | > | >
> | > |
> | > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
> | > |
> | > | MsgBox DateDiff("d", d1, d2)
> | > |
> | > | Sinon
> | > |
> | > | MsgBox d2 - d1
> | > |
> | > | Avec d2 >= d1
> | > |
> | > | En fait c'est comme sous Excel
> | > |
> | > | --
> | > | Cordialement,
> | > |
> | > | Jacques.
> | >
> | >
> |
> |
>
>
2 millions de fois merci !
Claude
"X" <X@Y.Z> a écrit dans le message de
news:uOKcdtaTGHA.4616@TK2MSFTNGP10.phx.gbl...
Salut,
En fait je n'ai pas mis de Calendar dans l'exemple, mais il te sera
facile de transposer, j'ai fait un choix par combo, car ça risquait de ne
pas marcher, nous n'avons pas la même version de VB ni la même version du
calendar, en plus ça évite un ocx de plus, et parfois la mise à jour de
sa
dépendance à la main...
Il y a 2 choix, l'un avec combo à date totale, l'autre plus souple avec 3
combos (jj + mm + aaaa)...
A toi de voir si tu veux vraiment un calendar, ou ce qui t'es proposé te
suffit :o)
Voici le code, les fichiers sources sont joints, comme les objets
(justement) sont les mêmes, ça ne devrait pas trop poser de problèmes
pour
faire du copier/coller, voire à lancer directement en vb5...
---------------------
' <> entre 2 dates : form1 : 1.0 : 22/03/06
'
' 24 OBJET A INCORPORER sur form1
' - 4 comboBox : combo1 + combo2 + combo3 + combo4
' - 6 labels : label1 + label2 + label3 + label4 + label5 + label6
' - 4 optionBoutons : option1 + option2 + option3 + option4
' - 2 textBox : text1 + text2
' - 6 boutons : command1 + command2 + command3 + command4 + command5 +
command6
' - 2 frames : frame1 + frame 2
'
' NOTE
'si utilisation de Calendar, remplacer la date obtenue par les combo
' comboX.text ou ce qui en découle, par calendarX.value
'
Option Explicit
Dim date_jour As Long
'
Sub Form_Load() ' chargement
Dim ladate As Date
Dim i As Long
'
Combo1.Clear ' mettre combo1.style = 2 POSSIBILITE 1
ladate = "01/01/1970" ' date inférieure
For i = 0 To 20000 ' date de fin = date de départ + 20.000 jours
Combo1.AddItem ladate ' met date dans combo
ladate = ladate + 1 ' date ++
If Date = ladate Then date_jour = i + 1 ' date du jour
Next i
Combo1.ListIndex = date_jour ' positionne date du jour
'
Combo2.Clear ' mettre les 3 combos.style = 2 POSSIBILITE 2
Combo3.Clear
Combo4.Clear
For i = 1 To 31
Combo2.AddItem Format(i, "00")
If i < 13 Then Combo3.AddItem Format(i, "00")
Next i
'
For i = 1900 To 2099
Combo4.AddItem i
Next i
'
Combo2.ListIndex = Day(Date) - 1 ' positionne date du jour
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
'
Option1.Value = True ' POSSIBILITES 1 + 2
Option3.Value = True
Label2.Caption = ""
Label3.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
Text1 = ""
Text2 = ""
End Sub
Sub Command1_Click() 'validation de la date POSSIBILITE 1
If Option1.Value = True Then Label2.Caption = Combo1.Text
If Option1.Value = False Then Label3.Caption = Combo1.Text
End Sub
Sub Command3_Click() 'date du jour POSSIBILITE 1
Combo1.ListIndex = date_jour
End Sub
Sub Command2_Click() 'calcule la différence POSSIBILITE 1
Dim date1 As Date
Dim date2 As Date
'
If Label2.Caption = "" Or Label3.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label2.Caption
date2 = Label3.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text1 = Format(date2 - date1, "## ##0")
End Sub
Sub Command4_Click() 'validation de la date POSSIBILITE 2
Dim verif_date As Date
'
If Option3.Value = True Then
Label5.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label5.Caption
End If
'
If Option3.Value = False Then
Label6.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label6.Caption
End If
Exit Sub
'
erreur:
On Error Resume Next
MsgBox "Cette date n'existe pas, remédier ", vbExclamation
End Sub
Sub Command6_Click() 'date du jour POSSIBILITE 2
Dim jour As Date
Combo2.ListIndex = Day(Date) - 1
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
End Sub
Sub Command5_Click() 'calcule la défférence POSSIBILITE 2
Dim date1 As Date
Dim date2 As Date
'
If Label5.Caption = "" Or Label6.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label5.Caption
date2 = Label6.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text2 = Format(date2 - date1, "## ##0")
End Sub
------
fin de code
------
Site logiciels
http://irolog.free.fr
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
--------------------------------------------------------------------------
----------
"Claude" <Claude@Claude.Claude> a écrit dans le message de news:
u267h9VTGHA.4608@tk2msftngp13.phx.gbl...
> Merci pour tes explications mais elles sont un peu sombres pour moi.
> Voici l`idée que j`aimerais faire...
>
> L`utilisateur clique sur une premiere date sur le calendrier, puis sur
une
> deuxieme.
> Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la
difference
> de
> jour entre ces 2 dates !
> C`est aussi simple que cela !
> Tu peux m`aider?
>
> En te remerciant d`avance
>
> Claude
>
> "X" <X@Y.Z> wrote in message
news:u6VBaaVTGHA.5500@TK2MSFTNGP12.phx.gbl...
> | Salut,
> |
> | La propriété est numérique ou date (texte date), selon ce que tu
> veux,
> | voici, j'ai testé:
> |
> | Si ton code (dans un bouton 1) est ça:
> | Sub Command1_Click()
> | Dim ladate As Double
> | Dim date_a As Date
> | Dim date_b As Date
> | Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
> | date_a = "21/03/2006"
> | Text1 = Text1 & date_a & vbCrLf
> | Text1 = Text1 & CDbl(date_a) & vbCrLf
> | date_a = CDate(38799)
> | Text1 = Text1 & date_a & vbCrLf
> | date_a = "21/03/2006"
> | date_b = "23/03/2006"
> | ladate = date_b - date_a
> | Text1 = Text1 & ladate & vbCrLf
> | End Sub
> |
> |
> | Ça te donne en mettant le calendar au 1/1/1900
> | 2
> | 21/03/2006
> | 38797
> | 23/03/2006
> | 2
> |
> | En conséquence (tu as vu ci-dessus comment on passait du numérique à
la
> | date, et réciproquement):
> | - En numérique, calendar commence au 31/12/1899 = jour 1
> | - Le 21/03/2006 est le jour 38797
> | - Le 23/03/2006 est le jour 38799
> | donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
> |
> |
> | En conclusions:
> |
> | - Pour passer d'une date texte à une date numérique:
> | Dim ladate As Double
> | Dim date_a As Date
> | ladate = CDbl(Calendar1.Value)
> |
> | - Pour passer d'une date numérique à une date texte:
> | Dim ladate As Double
> | Dim date_a As Date
> | date_a = CDate(38799)
> |
> | - pour calculer l'écart entre 2 dates texte
> | dim numérique as double
> | dim date1 as date
> | dim date2 as date
> | date1="21/03/2006"
> | date2="23/03/2006"
> | numerique = date2 - date1 (= 2)
> |
> | Et si tu représente une date avec une heure, ce sera alors une
décimal,
> | comme déjà épondu:
> | nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
> | j,s
> |
> | Si tu utilises les fonctions indiquées par Jacques ça donnera la même
> chose,
> | à toi de voir si tu veux faire du calcul ou utiliser les fonctions
> | prédéfinies...
> |
> | Est-ce clair, si c'est sombre, envoie, je te fais !
> |
> | ------
> | Site logiciels
> | http://irolog.free.fr
> | http://irolog.free.fr/ecrire/index.htm
> | Site perso
> | http://irolog.free.fr/joe/index.htm
> | Principe d'utilisation des news Groups
> |
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
>
| --------------------------------------------------------------------------
----------
> | "Claude" <Claude@Claude.Claude> a écrit dans le message de news:
> | OMNdPbUTGHA.4616@TK2MSFTNGP10.phx.gbl...
> | > Bonjour Jacques!
> | >
> | > J`utilise la librairie Microsoft Calendar components V 10.0 pour
aller
> | > choisir les dates.
> | > La propriétés calendar1.value est-elle numerique ou bien chaine de
> | > caracteres? Où puis-je trouver ce renseignement !
> | > VB5 contient la fonction Datediff mais le résultat est toujours 0,
> c`est
> | > pourquoi je me demande si calendar1.value est chaine. Si oui,
comment
> | > puis-je la convertir en numérique afin d`y effectuer l`opération
> | > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
> | >
> | > merci infiniment.....
> | >
> | > Claude
> | >
> | > "Jacques93" <jacques@Nospam> wrote in message
> | > news:uKbQ1zKTGHA.4608@tk2msftngp13.phx.gbl...
> | > | Bonjour Claude,
> | > | Claude a écrit :
> | > | > Bonjour à tous !
> | > | >
> | > | > J`utilise VB5 et je dois me faire une application qui calcule
> le
> | > nombre
> | > de
> | > | > jour entre 2 dates.
> | > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
> mais
> | > le
> | > | > résultat est une chaine de caractere. Comment faire pour faire
une
> | > opération
> | > | > mathématique sur une chaine de caractere? J`ai réussi avec
Excell
> mais
> | > | > j`aimerais le faire avec VB5.
> | > | >
> | > |
> | > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
> | > |
> | > | MsgBox DateDiff("d", d1, d2)
> | > |
> | > | Sinon
> | > |
> | > | MsgBox d2 - d1
> | > |
> | > | Avec d2 >= d1
> | > |
> | > | En fait c'est comme sous Excel
> | > |
> | > | --
> | > | Cordialement,
> | > |
> | > | Jacques.
> | >
> | >
> |
> |
>
>
2 millions de fois merci !
Claude
"X" a écrit dans le message de
news:Salut,
En fait je n'ai pas mis de Calendar dans l'exemple, mais il te sera
facile de transposer, j'ai fait un choix par combo, car ça risquait de ne
pas marcher, nous n'avons pas la même version de VB ni la même version du
calendar, en plus ça évite un ocx de plus, et parfois la mise à jour de
sa
dépendance à la main...
Il y a 2 choix, l'un avec combo à date totale, l'autre plus souple avec 3
combos (jj + mm + aaaa)...
A toi de voir si tu veux vraiment un calendar, ou ce qui t'es proposé te
suffit :o)
Voici le code, les fichiers sources sont joints, comme les objets
(justement) sont les mêmes, ça ne devrait pas trop poser de problèmes
pour
faire du copier/coller, voire à lancer directement en vb5...
---------------------
' <> entre 2 dates : form1 : 1.0 : 22/03/06
'
' 24 OBJET A INCORPORER sur form1
' - 4 comboBox : combo1 + combo2 + combo3 + combo4
' - 6 labels : label1 + label2 + label3 + label4 + label5 + label6
' - 4 optionBoutons : option1 + option2 + option3 + option4
' - 2 textBox : text1 + text2
' - 6 boutons : command1 + command2 + command3 + command4 + command5 +
command6
' - 2 frames : frame1 + frame 2
'
' NOTE
'si utilisation de Calendar, remplacer la date obtenue par les combo
' comboX.text ou ce qui en découle, par calendarX.value
'
Option Explicit
Dim date_jour As Long
'
Sub Form_Load() ' chargement
Dim ladate As Date
Dim i As Long
'
Combo1.Clear ' mettre combo1.style = 2 POSSIBILITE 1
ladate = "01/01/1970" ' date inférieure
For i = 0 To 20000 ' date de fin = date de départ + 20.000 jours
Combo1.AddItem ladate ' met date dans combo
ladate = ladate + 1 ' date ++
If Date = ladate Then date_jour = i + 1 ' date du jour
Next i
Combo1.ListIndex = date_jour ' positionne date du jour
'
Combo2.Clear ' mettre les 3 combos.style = 2 POSSIBILITE 2
Combo3.Clear
Combo4.Clear
For i = 1 To 31
Combo2.AddItem Format(i, "00")
If i < 13 Then Combo3.AddItem Format(i, "00")
Next i
'
For i = 1900 To 2099
Combo4.AddItem i
Next i
'
Combo2.ListIndex = Day(Date) - 1 ' positionne date du jour
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
'
Option1.Value = True ' POSSIBILITES 1 + 2
Option3.Value = True
Label2.Caption = ""
Label3.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
Text1 = ""
Text2 = ""
End Sub
Sub Command1_Click() 'validation de la date POSSIBILITE 1
If Option1.Value = True Then Label2.Caption = Combo1.Text
If Option1.Value = False Then Label3.Caption = Combo1.Text
End Sub
Sub Command3_Click() 'date du jour POSSIBILITE 1
Combo1.ListIndex = date_jour
End Sub
Sub Command2_Click() 'calcule la différence POSSIBILITE 1
Dim date1 As Date
Dim date2 As Date
'
If Label2.Caption = "" Or Label3.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label2.Caption
date2 = Label3.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text1 = Format(date2 - date1, "## ##0")
End Sub
Sub Command4_Click() 'validation de la date POSSIBILITE 2
Dim verif_date As Date
'
If Option3.Value = True Then
Label5.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label5.Caption
End If
'
If Option3.Value = False Then
Label6.Caption = Combo2.Text & "/" & Combo3.Text & "/" & Combo4.Text
On Error GoTo erreur
verif_date = Label6.Caption
End If
Exit Sub
'
erreur:
On Error Resume Next
MsgBox "Cette date n'existe pas, remédier ", vbExclamation
End Sub
Sub Command6_Click() 'date du jour POSSIBILITE 2
Dim jour As Date
Combo2.ListIndex = Day(Date) - 1
Combo3.ListIndex = Month(Date) - 1
Combo4.ListIndex = Year(Date) - 1900
End Sub
Sub Command5_Click() 'calcule la défférence POSSIBILITE 2
Dim date1 As Date
Dim date2 As Date
'
If Label5.Caption = "" Or Label6.Caption = "" Then
MsgBox "Vous devez choisir 2 dates, remédier ", vbExclamation
Exit Sub
End If
'
date1 = Label5.Caption
date2 = Label6.Caption
If date1 > date2 Then
MsgBox "La 1ere date doit être = ou < à la 2eme date, remédier ",
vbExclamation
Exit Sub
End If
'
Text2 = Format(date2 - date1, "## ##0")
End Sub
------
fin de code
------
Site logiciels
http://irolog.free.fr
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
--------------------------------------------------------------------------
----------"Claude" a écrit dans le message de news:
> Merci pour tes explications mais elles sont un peu sombres pour moi.
> Voici l`idée que j`aimerais faire...
>
> L`utilisateur clique sur une premiere date sur le calendrier, puis sur
une> deuxieme.
> Ensuite, il ne reste qu`à cliquer sur un bouton pour savoir la
difference> de
> jour entre ces 2 dates !
> C`est aussi simple que cela !
> Tu peux m`aider?
>
> En te remerciant d`avance
>
> Claude
>
> "X" wrote in message
news:> | Salut,
> |
> | La propriété est numérique ou date (texte date), selon ce que tu
> veux,
> | voici, j'ai testé:
> |
> | Si ton code (dans un bouton 1) est ça:
> | Sub Command1_Click()
> | Dim ladate As Double
> | Dim date_a As Date
> | Dim date_b As Date
> | Text1 = CDbl(Calendar1.Value) & vbCrLf ' = 1er/01/1900
> | date_a = "21/03/2006"
> | Text1 = Text1 & date_a & vbCrLf
> | Text1 = Text1 & CDbl(date_a) & vbCrLf
> | date_a = CDate(38799)
> | Text1 = Text1 & date_a & vbCrLf
> | date_a = "21/03/2006"
> | date_b = "23/03/2006"
> | ladate = date_b - date_a
> | Text1 = Text1 & ladate & vbCrLf
> | End Sub
> |
> |
> | Ça te donne en mettant le calendar au 1/1/1900
> | 2
> | 21/03/2006
> | 38797
> | 23/03/2006
> | 2
> |
> | En conséquence (tu as vu ci-dessus comment on passait du numérique à
la> | date, et réciproquement):
> | - En numérique, calendar commence au 31/12/1899 = jour 1
> | - Le 21/03/2006 est le jour 38797
> | - Le 23/03/2006 est le jour 38799
> | donc 38799-39797 = 2, il y a 2 jours entre le 21 et le 23/3/2006
> |
> |
> | En conclusions:
> |
> | - Pour passer d'une date texte à une date numérique:
> | Dim ladate As Double
> | Dim date_a As Date
> | ladate = CDbl(Calendar1.Value)
> |
> | - Pour passer d'une date numérique à une date texte:
> | Dim ladate As Double
> | Dim date_a As Date
> | date_a = CDate(38799)
> |
> | - pour calculer l'écart entre 2 dates texte
> | dim numérique as double
> | dim date1 as date
> | dim date2 as date
> | date1="21/03/2006"
> | date2="23/03/2006"
> | numerique = date2 - date1 (= 2)
> |
> | Et si tu représente une date avec une heure, ce sera alors une
décimal,> | comme déjà épondu:
> | nombre de jours depuis le 31/12/1899 ,virgule, nombre de secondes
> | j,s
> |
> | Si tu utilises les fonctions indiquées par Jacques ça donnera la même
> chose,
> | à toi de voir si tu veux faire du calcul ou utiliser les fonctions
> | prédéfinies...
> |
> | Est-ce clair, si c'est sombre, envoie, je te fais !
> |
> | ------
> | Site logiciels
> | http://irolog.free.fr
> | http://irolog.free.fr/ecrire/index.htm
> | Site perso
> | http://irolog.free.fr/joe/index.htm
> | Principe d'utilisation des news Groups
> |
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm>
| --------------------------------------------------------------------------
----------> | "Claude" a écrit dans le message de news:
> |
> | > Bonjour Jacques!
> | >
> | > J`utilise la librairie Microsoft Calendar components V 10.0 pour
aller> | > choisir les dates.
> | > La propriétés calendar1.value est-elle numerique ou bien chaine de
> | > caracteres? Où puis-je trouver ce renseignement !
> | > VB5 contient la fonction Datediff mais le résultat est toujours 0,
> c`est
> | > pourquoi je me demande si calendar1.value est chaine. Si oui,
comment> | > puis-je la convertir en numérique afin d`y effectuer l`opération
> | > mathematique et obtenir ainsi le nombre de jour entre mes 2 dates!
> | >
> | > merci infiniment.....
> | >
> | > Claude
> | >
> | > "Jacques93" wrote in message
> | > news:
> | > | Bonjour Claude,
> | > | Claude a écrit :
> | > | > Bonjour à tous !
> | > | >
> | > | > J`utilise VB5 et je dois me faire une application qui calcule
> le
> | > nombre
> | > de
> | > | > jour entre 2 dates.
> | > | > J`avais penser utiliser l`outil Calendar avec sa calendar.value
> mais
> | > le
> | > | > résultat est une chaine de caractere. Comment faire pour faire
une> | > opération
> | > | > mathématique sur une chaine de caractere? J`ai réussi avec
Excell> mais
> | > | > j`aimerais le faire avec VB5.
> | > | >
> | > |
> | > | Si la fonction DateDiff est présente sous VB5 (OK sous VB6) :
> | > |
> | > | MsgBox DateDiff("d", d1, d2)
> | > |
> | > | Sinon
> | > |
> | > | MsgBox d2 - d1
> | > |
> | > | Avec d2 >= d1
> | > |
> | > | En fait c'est comme sous Excel
> | > |
> | > | --
> | > | Cordialement,
> | > |
> | > | Jacques.
> | >
> | >
> |
> |
>
>