Format horaire et calcul d'heures

Pilpoil

XLDnaute Nouveau
Bonjour à tous,

Nouveau sur ce forum et d'un niveau de débutant, j'y ai effectué des recherches mais n'ai trouvé qu'une partie de réponse.

Sur un tableau qui me sert à calculer un temps de présence, j'utilise actuellement 3 cellules :
En A1, j'indique une heure de début au format horaire 10:00
En A2, j'indique une heure de fin (sur la même journée calendaire) au format horaire 14:00
En A3, j'obtiens très simplement le résultat (A2-A1) sous la forme 4:00

Je rentrais jusqu'à présent les horaires en indiquant les ":" entre les heures et les minutes.
J'ai donc cherché à me simplifier la tâche pour n'avoir qu'à indiquer les heures sous la forme 1000.
Grâce à ce forum, j'ai trouvé la solution de Dull (https://www.excel-downloads.com/threads/cherche-code-vba-pour-format-heure.83964/) très pratique en utilisant le format personnalisé ##\:## :)
Sauf que... maintenant le calcul horaire ne fonctionne plus :(
Si je rentre 1000 en A1 et 1400 en A2, la soustraction A2-A1 me renvoie la valeur 0:00 au lieu de 4:00

Auriez-vous une idée pour retrouver la bonne valeur une fois le calcul automatique effectué :confused:
 

R@chid

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Salut tout le monde,
une petite intervention je sais pas si ca va t'aider ou non,
1) options excel ==> Options de correction automatique et dans les zones appropries saisissez :
Remplacer : ..
par : :
ce qui a te permettre d'ecrire l'heure sous forme de 15..36 et excel va la corriger automatiquement vers 15:36
<< une intervention de Hoerwind>> dans une discussion je me reppele pas la quelle.
@ + +
Rachid
 

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

Bonjour à tous


Re, Pilpoil.

Tout est fait par la macro (Merci à son auteur :)

VB:
  Private Sub Worksheet_Change(ByVal Target As Range)

    Dim HeurNum As String
    Dim HeurHeur As String
    Dim LongSaisie As Integer

    If Not Intersect(Target, Range("Heures")) Is Nothing Then
    'Si on saisit une formule, on sort
        If Target.HasFormula Then Exit Sub

    'Si on ne saisit rien, on sort (permet de supprimer les ":" en cas d'effacement)
        If Target = "" Then Exit Sub

    'Si on saisit du texte, on sort
        If IsNumeric(Target.Value) = False Then Exit Sub

        On Error Resume Next
        Application.EnableEvents = False

    'Initialisation des variables
        HeurNum = Target.Value
        LongSaisie = Len(HeurNum)

    'Test de la longueur de la chaîne saisi
        Select Case LongSaisie
            Case 1
                HeurNum = "000" & HeurNum
            Case 2
                HeurNum = "00" & HeurNum
            Case 3
                HeurNum = "0" & HeurNum
            Case 4
                HeurNum = HeurNum
        End Select
    'Initialisation de la variable retournée
        HeurHeur = Left(HeurNum, 2) & ":" & Right(HeurNum, 2)

    'Modification de la valeur saisie
        Target = HeurHeur
        Application.EnableEvents = True
        On Error GoTo 0
    Else
    End If

End Sub

Alt+F11 pour y accéder, mais vous n'aurez pas à pas à y toucher.
Seule la définition de la zone Heure sera à modifier si vous désirez étendre ou restreindre la possibilité de saisie des heures sous la forme hhmm.

Merci Victor21, je découvre... macro... VBA... Alt+F11 et je suis complètement perdu :eek:

J'ai tellement de questions que je vais commencer par la plus importante à mon avis; comment faire avec ce code VBA pour l'insérer dans chacune de mes feuilles de calcul ?
 

Victor21

XLDnaute Barbatruc
Re : Format horaire et calcul d'heures

Bonjour, Pilpoil.

Alt+F11 ouvre l'éditer VBA.
A gauche une arborescence
Sélectionnez le nom du classeur, puis le nom de la feuille concernée par double clic, et copiez le code ci-dessus dans la partie droite.
Recommencez pour chaque feuille concernée.
 

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

Bonjour, Pilpoil.

Alt+F11 ouvre l'éditer VBA.
A gauche une arborescence
Sélectionnez le nom du classeur, puis le nom de la feuille concernée par double clic, et copiez le code ci-dessus dans la partie droite.
Recommencez pour chaque feuille concernée.

Bonsoir,

Merci Victor21, c'est fait j'ai suivi vos indications et le code VBA est mis dans chaque feuille nécessaire.
J'ai cherché pour comprendre la subtilité du nom de la plage de cellules à définir pour que le code puisse fonctionner et j'ai fini par trouver ce qui clochait dans ma façon de procéder.
Je n'ai plus le temps de faire d'autres tests d'ici ce weekend, je repasserai donc d'ici le début de semaine prochaine.

@ claude38, je jetterais un œil à votre fichier par la même occasion.


Bonne soirée à tous en attendant :)
 

Pilpoil

XLDnaute Nouveau
Re : Format horaire et calcul d'heures

Re bonjour à tous,

J'ai effectué toutes les modifications nécessaires dans mon classeur et la méthode de Victor fonctionne à merveille.
Le plus long fut de nommer les plages de cellules de mes 24 feuilles de calcul.

Je garde au chaud la méthode de Claude38 dont j'ai compris le fonctionnement.

Un grand merci à tous :)
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote