Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Calcul de temps avec des 10 éme de secondes

JBARBE

XLDnaute Barbatruc
Bonjour,
Je reviens vers vous pour le calcul de temps avec des 10 éme de secondes !
Merci à l'avance et bonne soirée !
 

Pièces jointes

  • Ecart.xls
    66 KB · Affichages: 28

job75

XLDnaute Barbatruc
Bonjour à tous,

Voyez le fichier joint et ce code :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 5 Then Exit Sub
Cancel = True
[B:B].Interior.ColorIndex = xlNone 'RAZ
[E:E].ClearContents 'RAZ
With Cells(Target.Row, 2)
    If Not .Text Like "##:##:##*" Then Exit Sub
    .Interior.ColorIndex = 6 'jaune
    With Target.Resize([B:B].Find("", .Cells, xlValues).Row - Target.Row)
        .FormulaR1C1 = "=RC2-R" & Target.Row & "C2"
        .Value = .Value 'supprime les formules
    End With
End With
End Sub
A+
 

Pièces jointes

  • Ecart(1).xls
    64 KB · Affichages: 14

JBARBE

XLDnaute Barbatruc
Bonjour job 75
Pas mal ça !
Le double clic, il fallait y penser !
J'ai neutralisé des lignes de code dont je n'ai pas besoin !
Merci beaucoup !
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 5 Then Exit Sub
Cancel = True
'[B:B].Interior.ColorIndex = xlNone 'RAZ
'[E:E].ClearContents 'RAZ
With Cells(Target.Row, 2)
    If Not .Text Like "##:##:##*" Then Exit Sub
    '.Interior.ColorIndex = 6 'jaune
    With Target.Resize([B:B].Find("", .Cells, xlValues).Row - Target.Row)
        .FormulaR1C1 = "=RC2-R" & Target.Row & "C2"
        .Value = .Value 'supprime les formules
    End With
End With
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Bonjour job 75
Pas mal ça !
Le double clic, il fallait y penser !
comme dit précédemment , je reste persuadé que les données en colonne 2 ne sont pas du bon type !!! (texte avec caractère invisible)

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 5 Then Exit Sub
Cancel = True
[B:B].Interior.ColorIndex = xlNone 'RAZ
[E:E].ClearContents 'RAZ
i = 1
While Cells(i, 2) <> 0
Cells(i, 5) = Cells(1, 2) - Cells(i, 2)
i = i + 1
Wend
End Sub
une validation dans la barre de formule pour chaque cellule de la colonne 2
permet au code de fonctionner sans erreur
 

Modeste geedee

XLDnaute Barbatruc
Il n'y a pas de "caractère invisible", simplement les données en colonne B sont des textes (importés probablement).
Bien sûr si on les revalide on obtient des nombres.
Mon code fonctionne dans les 2 cas, textes ou nombres.
Oui nous sommes d'accord ...
mais tu passes par une fonctionnalité de feuille de calcul ...
.FormulaR1C1 = "=RC2-R" & Target.Row & "C2"
sans cette ligne, le code VBA ne sais pas interpréter les valeurs de la colonne 2
et
If Not .Text Like "##:##:##*" Then Exit Sub
devient inutile !!!
 

JBARBE

XLDnaute Barbatruc
Re,
Dans cette démonstration les activell.offset(0,-3) et activecell.offset(-1,-3) comprenaient des valeurs de temps et non de texte !
Ainsi il a fallut recourir à une formule pour effectuer un calcul ! Le VBA sans formule bug !
Merci et bonne journée !

 

JBARBE

XLDnaute Barbatruc
Il n'y a pas de "caractère invisible", simplement les données en colonne B sont des textes (importés probablement).

Bien sûr si on les revalide on obtient des nombres.

Mon code fonctionne dans les 2 cas, textes ou nombres.
Re,
Les données proviennent de la saisie dans une boite de dialogue !
Mais avant la boite de dialogue, je saisissais directement dans Excel et il y avait le même probléme !
Merci à tous de s'être penché sur mon probléme si particulier et bonne journée !
 

Dranreb

XLDnaute Barbatruc
C'est sûr, en VBA c'est pratiquement aussi compliqué à convertir en Double qu'à restituer en String depuis un Double !
VB:
Sub test()
Dim Txt As String, Temps As Double
Txt = "00:00:30,5"
Temps = TimeValue(Left(Txt, 5)) + Mid$(Txt, 7) / 86400
MsgBox Format(Temps, "hh:mm:") & Format(Temps * 86400 - Int(Temps * 1440) * 60, "00.00")
End Sub
 

Discussions similaires

Réponses
7
Affichages
349
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…