IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

différence d'heure sur plage d'horaire


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut différence d'heure sur plage d'horaire
    Bonjour,

    Je souhaite avoir la différence d'heure entre a(date debut) et b(date fin).
    mais ceci entre 6h-23h, donc entre 23h-6h la différence ne s'applique pas.
    Je ne sais pas si j'ai été clair XD

    ex: =)
    a=31/03/2008 12:00
    b=01/04/2008 03:00

    ==> resultat c(=difference b-a)= 11h (=23h-12h)

    a=31/03/2008 12:00
    b=02/04/2008 03:00

    ===> resultat c = 11h + (23h-6h) = 28h

    Voila, j'espere avoir ete plus clair sur cette exemple
    donc tout dépend de savoir si a est avant ou apres "6h" et du nombre de jours

    merci d'avance pour vos idées et aides

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    J'ai essayé avec du code VBA mais sans grd succes :


    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
    Private Sub CommandButton1_Click()
     
    Dim Ligne As Long
    For Ligne = 2 To 2000
     
    If Range("A" & Ligne).Value < "06:00" Then
     
            If Range("B" & Ligne).Value < "06:00" Then
                Range("E" & Ligne).Value = "0h"
            End If
     
            If Range("B" & Ligne).Value > "06:00" And Range("B" & Ligne).Value < "23:00" Then
                Range("E" & Ligne).Value = Range("B" & Ligne).Value - "06:00"
            End If
     
            If Range("B" & Ligne).Value > "23:00" And Range("B" & Ligne).Value < "06:00" Then
                Range("E" & Ligne).Value = "17:00"
            End If
     
            If Range("B" & Ligne).Value > "6:00" Then
                Range("E" & Ligne).Value = "17:00" + Range("B" & Ligne).Value - "06:00"
            End If
     
    End If
    Next
     
     
     
    For Ligne = 2 To 1000
    If Range("A" & Ligne).Value > "06:00" Then
     
            If Range("B" & Ligne).Value < "23:00" Then
                Range("E" & Ligne).Value = Range("B" & Ligne).Value - Range("A" & Ligne).Value
            End If
     
            If Range("B" & Ligne).Value > "06:00" And Range("B" & Ligne).Value < "23:00" Then
                Range("E" & Ligne).Value = "23:00"- Range("A" & Ligne).Value + Range("B" & Ligne).Value - "06:00"
            End If
     
     
    End If
    Next
     
    End Sub


    ya plusieurs cas a traiter et je ne sais pas trop comment m'y prendre

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Peut être une idée
    Salut

    Tiens j'ai peut être une idée, regarde ça peut peut être t'aider

    Bon courrage
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    Solution éventuelle en VBA :
    • Dates 1 en colonne A
    • Dates 2 en colonne B
    • Résultats en colonne C

    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
    Sub test()
    Dim D1 As Date, D2 As Date, T1 As Date, T2 As Date
    Dim H1 As Date, H2 As Date
    Dim Diff As Integer, i As Integer
     
    H1 = "06:00"
    H2 = "23:00"
     
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row '<-- commence le calcul à la ligne 2
     
        D1 = Format(Cells(i, 1), "dd/mm/yyyy")
        D2 = Format(Cells(i, 2), "dd/mm/yyyy")
        T1 = Format(Cells(i, 1), "h:mm")
        T2 = Format(Cells(i, 2), "h:mm")
     
        Select Case T1
            Case Is < H1
                T1 = "06:00"
            Case Is < H2
                T1 = T1
            Case Is > H2
                T1 = "06:00"
                D1 = D1 + 1
        End Select
     
        Select Case T2
            Case Is < H1
                T2 = "23:00"
                D2 = D2 - 1
            Case Is < H2
                T2 = T2
            Case Is > H2
                T2 = "23:00"
        End Select
     
        Diff = DateDiff("h", T1, T2) + (17 * (D2 - D1))
     
        Cells(i, 3) = Diff
     
    Next
     
    End Sub

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    J'ai le même type de soucis.

    J'importe des données d'un fichier texte (exporté d'un logiciel de gestion horaire) qui contient deux colonnes de soldes d'heures (exemple : colonne A 26h30 colonne B : 75h37).
    L'objectif est d'effectuer des calculs d'heure à partir de ces cellules.
    Exemples :
    soustraire 15h00 -> pas de soucis,
    ajouter 02h15 pas de soucis,
    soustraire un nombre d'heure plus important que le solde = problème !!
    De plus, les heures importées sont déformées : l'affichage est juste (54:21:00) mais le contenu est faux (03/01/1904 06:21:00) donc les calculs sont inexacts !

    J'utilise la colonne C pour indiquer le 2ème facteur de calcul et la colonne D pour le résultat.

    Merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Merci de vous interesser a mon sujet:

    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
    Private Sub CommandButton3_Click()
     
    Dim D1 As Date, D2 As Date, T1 As Date, T2 As Date
    Dim H1 As Date, H2 As Date
    Dim Diff As Integer, i As Integer
     
    H1 = "06:00"
    H2 = "23:00"
     
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row '<-- commence le calcul à la ligne 2
     
        D1 = Format(Cells(i, 1), "dd/mm/yyyy")
        D2 = Format(Cells(i, 2), "dd/mm/yyyy")
        T1 = Format(Cells(i, 1), "h:mm")
        T2 = Format(Cells(i, 2), "h:mm")
     
        Select Case T1
            Case Is < H1
                T1 = "06:00"
            Case Is < H2
                T1 = T1
            Case Is > H2
                T1 = "06:00"
                D1 = D1 + 1
        End Select
     
        Select Case T2
            Case Is < H1
                T2 = "23:00"
                D2 = D2 - 1
            Case Is < H2
                T2 = T2
            Case Is > H2
                T2 = "23:00"
        End Select
     
        Diff = DateDiff("h", T1, T2) + (17 * (D2 - D1))
     
        Cells(i, 3) = Diff
     
    Next
     
    End Sub
    J'ai bien tester le code proposer par fring mais par contre les calculs ne correspondent pas
    en resultat j'ai que des 00:00:00 ou 24:00:00

    en PJ mon excel pour ceux qui seront interessés
    Fichiers attachés Fichiers attachés

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'ai le même type de soucis.

    J'importe des données d'un fichier texte (exporté d'un logiciel de gestion horaire) qui contient deux colonnes de soldes d'heures (exemple : colonne A 26h30 colonne B : 75h37).
    L'objectif est d'effectuer des calculs d'heure à partir de ces cellules.
    Exemples :
    soustraire 15h00 -> pas de soucis,
    ajouter 02h15 pas de soucis,
    soustraire un nombre d'heure plus important que le solde = problème !!
    De plus, les heures importées sont déformées : l'affichage est juste (54:21:00) mais le contenu est faux (03/01/1904 06:21:00) donc les calculs sont inexacts !

    J'utilise la colonne C pour indiquer le 2ème facteur de calcul et la colonne D pour le résultat.

    Merci
    C'est peut etre du au format de la cellule:si tu mets en format:
    [h]:mm:ss ....

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par raymonizuka Voir le message
    J'ai bien tester le code proposer par fring mais par contre les calculs ne correspondent pas
    en resultat j'ai que des 00:00:00 ou 24:00:00
    1. la colonne des résultats doit être au format Nombre et pas au format Heure
    2. Observe les dates et heures de ta pièce jointe...

    date début --> 05/04/2008 23:50:22
    date fin --> 05/04/2008 23:50:23

    Différence = 1 seconde..!! et quasi toute ton tableau est comme ça, où est le rapport entre ton énoncé de départ "calculer différence d'heure entre deux dates selon une plage horaire" ?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/10/2010, 16h24
  2. Réponses: 4
    Dernier message: 05/02/2009, 18h33
  3. Comment faire un test sur plage d'heure ?
    Par shkyo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/02/2008, 14h51
  4. [Dates] Mauvais résultats sur différence d'heures
    Par riete dans le forum Langage
    Réponses: 9
    Dernier message: 23/10/2007, 10h52
  5. Différence d'heure sur access
    Par dddodo dans le forum Access
    Réponses: 9
    Dernier message: 28/12/2006, 11h31

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