Saisie et total en centièmes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ngexcel

XLDnaute Occasionnel
Bonjour
J ai eu ce code qui fonctionne bien j ai besoin d aide car je saisie mes heures en centièmes dans les cellules comment faire pour que cette macro additionne au format centièmes
Exemple 0:50 +0:25 +0:25= 1:00
Et ensuite je cherche à exécuter cette macro à chaque fois que je saisie une cellule de la colonne h par exemple voici le code
Merci de votre aide


Sub Regroupe()
[H8].CurrentRegion.Sort , key1:=[H8], Header:=xlYes 'Mettre la reference point de depart du tableau ici H8
ligne = 8 ' mettre la ligne du début du tableau
Do While Cells(ligne, 8) <> "" 'mettre le numero de la première colonne du tableau ici H = 8
If Cells(ligne, 8) = Cells(ligne + 1, 8) Then 'idem pour la colonne
Cells(ligne, "I") = Cells(ligne, "I") + Cells(ligne + 1, "I") 'mettre la lettre qui désigne la seconde colonne ici colonne I
Rows(ligne + 1).Delete
Else
ligne = ligne + 1
End If
Loop
End Sub
 
Bonjour ngexcel, Bernard,

Vraiment pas génial les heures en décimal !

Par ailleurs supprimer les lignes une par une prend beaucoup de temps sur de grands tableaux.

Il vaut beaucoup mieux utiliser le Dictionary et des tableaux VBA :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, d As Object, i&, n&, a, b
With [Debut].CurrentRegion
    If Intersect(Target, .Cells) Is Nothing Then Exit Sub
    t = .Resize(, 2) 'matrice, plus rapide
End With
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(t)
    d(t(i, 1)) = d(t(i, 1)) + Val(Replace(t(i, 2), ",", "."))
Next
n = d.Count
Application.EnableEvents = False
If n Then
    a = d.keys: b = d.items
    For i = 1 To n
        t(i, 1) = a(i - 1)
        t(i, 2) = b(i - 1)
    Next
    [Debut].Offset(1, 1).Resize(n).NumberFormat = "0.00" 'format nombre décimal
    [Debut].Offset(1).Resize(n, 2) = t 'restitution du tableau
End If
[Debut].Offset(n + 1).Resize(Rows.Count - n - [Debut].Row, 2).Delete xlUp 'RAZ sous le tableau
With UsedRange: End With 'actualise la barre de défilement verticale
Application.EnableEvents = True
End Sub
Fichier joint.

A+
 

Pièces jointes

Bonjour et merci je test cette après midi
Je suis obligé de saisir en centièmes nous travaillons avec des temps en centièmes donc c est vrai pour dire 1h30 minutes c'est 1h50 centièmes mais bon avec SAP comme programme de gestion faut pas l enever...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
515
Réponses
2
Affichages
160
Réponses
7
Affichages
255
Réponses
6
Affichages
160
Retour