1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2011
    Messages : 3
    Points : 2
    Points
    2

    Par défaut Calcul d'un intervalle entre deux heures

    Bonjour,

    Je souhaite faire une application dans laquelle l'utilisateur saisit une heure de début, et une heure de fin :


    Jusque là, ça va. Mais ensuite, je n'arrive pas à calculer l'intervalle entre ces deux heures, et à l'afficher dans un msgbox...


    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2008
    Messages : 3 615
    Points : 8 074
    Points
    8 074

    Par défaut

    Utiliser - entre deux heures te donne un TimeSpan, tu peux regarder la doc pour l'utiliser convenablement ensuite
    http://msdn.microsoft.com/en-us/libr....timespan.aspx

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2011
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    D'accord, merci. Mais comment puis-je afficher la différence dans un msgbox ?

    Si l'utilisateur saisit :

    dans le champ Début => 12:20
    dans le champ Fin => 12:50
    Comment avoir un msgbox contenant : "0:30"

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien SAV
    Inscrit en
    novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien SAV

    Informations forums :
    Inscription : novembre 2011
    Messages : 6
    Points : 1
    Points
    1

    Par défaut

    Essaye ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If InStr(TextBox1.Text, ":") = 0 Or InStr(TextBox1.Text, ":") = 0 Then
                MsgBox("Veuillez écrire l'heure sous cette forme: hh:mm")
            End If
            If Len(TextBox1.Text) > 4 Or Len(TextBox2.Text) > 4 Then
                MsgBox("Veuillez écrire l'heure sous cette forme: hh:mm")
            End If
            Dim un, deux, trois, quatre As Integer
            Dim cinq, six As String
            un = Mid(TextBox1.Text, 1, InStr(TextBox1.Text, ":") - 1)
            deux = Mid(TextBox1.Text, InStr(TextBox1.Text, ":") + 1)
            trois = Mid(TextBox2.Text, 1, InStr(TextBox2.Text, ":") - 1)
            quatre = Mid(TextBox2.Text, InStr(TextBox2.Text, ":") + 1)
            cinq = un - trois
            six = deux - quatre
            If cinq < 0 Then cinq = cinq * (-1)
            If six < 0 Then six = six * (-1)
            If Len(six) = 1 Then six = "0" & six
            If Len(cinq) = 1 Then cinq = "0" & cinq
            MsgBox(cinq & ":" & six)
        End Sub
    C'est du bricolage mais ça fonctionne.
    Créé une form avec 2 textbox nommés respectivement textbox1 et textbox2 et un boutton nommé button1.
    Puis tu colle le code.

  5. #5
    Membre averti
    Homme Profil pro
    Caféinomane
    Inscrit en
    septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : septembre 2011
    Messages : 202
    Points : 391
    Points
    391

    Par défaut

    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Dim h1, h2 As TimeSpan
     
            h1 = TimeSpan.Parse(TextBox1.Text)
            h2 = TimeSpan.Parse(TextBox2.Text)
            MsgBox((h2 - h1).ToString)
    En mode lecture/écriture.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    novembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2011
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Ah ben c'est bon, je m'en suis sorti avec le DateDiff :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim debut, fin As Date
     
    debut = CDate(debut.Text)
    fin = CDate(fin.Text)
     
    MsgBox(DateDiff(DateInterval.Minute, debut, fin))

    Ah, merci à tous pour votre rapidité et efficacité, et principalement à franticfranz ! Ton code fonctionne parfaitement, mieux que celui que j'ai copié ci-dessus.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2015
    Messages : 3
    Points : 4
    Points
    4

    Par défaut

    Citation Envoyé par franticfranz Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Dim h1, h2 As TimeSpan
     
            h1 = TimeSpan.Parse(TextBox1.Text)
            h2 = TimeSpan.Parse(TextBox2.Text)
            MsgBox((h2 - h1).ToString)

    Impeccable,
    (h2 - h1).ToString("hh\:mm") //pour avoir un format heure:minute
    (h2 - h1).ToString("hh\Hmm") //pour avoir un format heureHminute
    etc...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2017
    Messages : 22
    Points : 16
    Points
    16

    Par défaut

    Citation Envoyé par SeexyViking Voir le message
    Impeccable,
    (h2 - h1).ToString("hh\:mm") //pour avoir un format heure:minute
    (h2 - h1).ToString("hh\Hmm") //pour avoir un format heureHminute
    etc...
    Je boss sur un projet , je cherche a comptabiliser le nombre d'heures effectuer par chaque employe de la société au cours du mois.et la j'ai crée une base de donnée mais comment générer la somme d'heure effectuée de chaque employer dans la datagridview ? que j'ai crée dans un Windows form,en effet lorsque je fais appel a un nom ou une référence il doit afficher dans la datagridview l'ensemble des données et la somme d'heure effectuée. Mon problème est de savoir comment générer la somme d'heure par chaque employer au cours mois , ou de la semaine ceci dépend.
    je vous pries de me donner des idées , merci bien car je suis débutant
    Répondre
    Images attachées Images attachées    

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2015
    Messages : 3
    Points : 4
    Points
    4

    Par défaut

    Citation Envoyé par wayne1989 Voir le message
    Je boss sur un projet , je cherche a comptabiliser le nombre d'heures effectuer par chaque employe de la société au cours du mois.et la j'ai crée une base de donnée mais comment générer la somme d'heure effectuée de chaque employer dans la datagridview ? que j'ai crée dans un Windows form,en effet lorsque je fais appel a un nom ou une référence il doit afficher dans la datagridview l'ensemble des données et la somme d'heure effectuée. Mon problème est de savoir comment générer la somme d'heure par chaque employer au cours mois , ou de la semaine ceci dépend.
    je vous pries de me donner des idées , merci bien car je suis débutant
    Répondre
    Je n'ai pas bien compris ce que tu veux afficher dans ton datagrid (soit tu listes pour 1 employé tous ses chantiers avec le nombre d'heure travaillé et a la fin tu ajoutes dans ton datagrid une dernière ligne TOTAL que tu remplies avec la somme des heures de travaillé) dans ce cas tu boucles sur les lignes de ton datagrid et tu incrémentes une variable totalHeure avec tes informations.
    Soit tu veux une seul ligne avec directement le total, dans ce cas la tu nous fait une jolie requête SELECT SUM(nb_heure) FROM Employe WHERE id_employé=1.

    Bonne journée

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2017
    Messages : 22
    Points : 16
    Points
    16

    Par défaut

    Citation Envoyé par SeexyViking Voir le message
    Je n'ai pas bien compris ce que tu veux afficher dans ton datagrid (soit tu listes pour 1 employé tous ses chantiers avec le nombre d'heure travaillé et a la fin tu ajoutes dans ton datagrid une dernière ligne TOTAL que tu remplies avec la somme des heures de travaillé) dans ce cas tu boucles sur les lignes de ton datagrid et tu incrémentes une variable totalHeure avec tes informations.
    Soit tu veux une seul ligne avec directement le total, dans ce cas la tu nous fait une jolie requête SELECT SUM(nb_heure) FROM Employe WHERE id_employé=1.

    Bonne journée


    Stp peut tu mettre un exemple de code comment m'y prendre si je veut une liste avec la somme des heures des employes,
    sachant que je dois me base sur mes 2 requetes creer. donc voici Merci
    Images attachées Images attachées   

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2015
    Messages : 3
    Points : 4
    Points
    4

    Par défaut

    Citation Envoyé par wayne1989 Voir le message
    Stp peut tu mettre un exemple de code comment m'y prendre si je veut une liste avec la somme des heures des employes,
    sachant que je dois me base sur mes 2 requetes creer. donc voici Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim MyDataTblHoraire As DataTable
    MyDataTblHoraire = SelectTotalHoraireEmployé()
    Me.DataGrid_TotalHoraire.Rows.Clear()
     
    For Each MyDataRow As DataRow In MyDataTblHoraire .Rows
           Me.DataGrid_TotalHoraire.Rows.Add(MyDataRow("code"), MyDataRow("employe"), MyDataRow("colum_somme_heure"))
    Next

    ta méthode SelectTotalHoraireEmployé() doit se connecter a Access, regarde sur internet, et exécuter ta requête que tu devras écrire sous VB (Tu peux retranscrire en texte la requête que tu as faite sur Access normalement)
    ta méthode doit te retourner un DataTable

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Public Function SelectTotalHoraireEmployé(requete As String, connectionString As String) As DataTable
     
            Dim MyCn As New SqlConnection
            Dim MyDatAdp As New SqlDataAdapter
            Dim MyCmdBld As New SqlCommandBuilder
            Dim MyDataTblDonnees As New DataTable
     
            'connexion a la bd
            MyCn.ConnectionString = connectionString
     
            Try
                'ouverture de la connexion
                MyCn.Open()
                Try
                    'execution de la requête et remplissage du DataTable avec le resultat de celle-ci
                    MyDatAdp = New SqlDataAdapter(requete, MyCn)
                    MyCmdBld = New SqlCommandBuilder(MyDatAdp)
                    MyDatAdp.Fill(MyDataTblDonnees)
                Catch ex As Exception
                    MsgBox(ex.ToString())
                Finally
                    MyCn.Close()
                End Try
            Catch ex As Exception
                MsgBox("erreur_connexion", MsgBoxStyle.Critical, "Erreur")
            End Try
     
            Return MyDataTblDonnees
     
        End Function
    Tu as plus qu'a écrire la requête, et trouver la chaîne de connexion pour faire la liaison VB-ACCESS.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2017
    Messages : 22
    Points : 16
    Points
    16

    Par défaut

    merci beaucoup, je te dit quoi tantôt

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2017
    Messages : 22
    Points : 16
    Points
    16

    Par défaut

    Bonjour a tous

    Stp SexyVikking possible de jeter un coup d'oeil sur le code ci-dessous car il marche pas, merci bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
     
    Public Class FrmROUGRAPH
     
     
        'Etablissement de connexion
     
        Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\V_Techno_DB_be.mdb")
     
        'Déclaration de quelques variables
     
        Public rSQL As String
        Public i As Integer
        Public arrimage() As Byte
        Dim cmd As New OleDbCommand
        Dim MyCn As New SqlConnection
        Dim MyDatAdp As New SqlDataAdapter
        Dim MyCmdBld As New SqlCommandBuilder
        Dim MyDataTblDonnees As New DataTable
     
     
     
        Private Sub FrmROUGRAPH_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            remplirEmployers()
     
        End Sub
     
        '---Affichage de données de la Table Employers par la DataGridView1
     
        Sub remplirEmployers()
     
            Try
                Dim cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\V_Techno_DB_be.mdb")
     
                Dim cmd As New OleDbCommand("select * from Requête SommeTotalHeures", cn)
                cn.Open()
                Dim da As New OleDbDataAdapter(cmd)
                Dim ds As New DataSet
                da.Fill(ds, "V_Techno_DB_be")
                DataGridView1.DataSource = ds
                DataGridView1.DataMember = "V_Techno_DB_be"
                cn.Close()
            Catch ex As Exception
                'MsgBox(ex.Message)
            End Try
     
        End Sub
     
     
     
        Private Sub SelectTotalHoraireEmployé(requete As String, connectionString As String) As DataTable
     
     
     
            'connexion a la bd
            MyCn.ConnectionString = connectionString
     
            Try
                'ouverture de la connexion
                MyCn.Open()
                Try
                    'execution de la requête et remplissage du DataTable avec le resultat de celle-ci
                    MyDatAdp = New SqlDataAdapter(requete, MyCn)
                    MyCmdBld = New SqlCommandBuilder(MyDatAdp)
                    MyDatAdp.Fill(MyDataTblDonnees)
                Catch ex As Exception
                    MsgBox(ex.ToString())
                Finally
                    MyCn.Close()
                End Try
            Catch ex As Exception
                MsgBox("erreur_connexion", MsgBoxStyle.Critical, "Erreur")
            End Try
     
            Return MyDataTblDonnees
     
        End Sub
     
     
    End Class

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul du temps écoulé entre deux heures
    Par topor dans le forum VBScript
    Réponses: 3
    Dernier message: 09/05/2013, 18h08
  2. [Débutant] Calculer le temps écoulé entre deux heures
    Par amine_angel80 dans le forum Assembleur
    Réponses: 2
    Dernier message: 28/05/2008, 16h23
  3. calcul l'ecart entre deux heures
    Par magictom42 dans le forum Access
    Réponses: 2
    Dernier message: 06/12/2006, 13h40
  4. Réponses: 7
    Dernier message: 05/07/2006, 16h29
  5. [Dates] Calcul d'une différence entre deux heures
    Par loreleï85 dans le forum Fonctions
    Réponses: 12
    Dernier message: 28/06/2006, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo