Remplacer point par virgule sans l'option "Rechercher et Selectionner"
Re,
Je ne sais pas ou tu veux m'emmener !?
Ma proposition part du fichier de Schmiblick et des données en colonne 1.
C'est tout et cette procédure est simple.
Cdlt.
Sub Essai2()
Dim n As Long, i As Long, x
n = Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To n Step 4
x = Split(Cells(i, 1))(0)
x = Val(x) / 86400
x = WorksheetFunction.Text(x, "hh:mm:ss.00")
With Cells(i - 1, 15)
.NumberFormat = "@"
.Value = x
End With
Next i
End SubRe Jean-Eric,
tu a écrit :Je ne sais pas où tu veux m'emmener !?
??? non, il ne s'agit pas d'ça du tout : j'cherche à t'emmener nulle part ! simplement, partons du principe que nos 2 macros donnent les bons résultats ; ça fait que pour le 1er fichier "Convertir(1)", nos résultats sont les mêmes : ça coïncide, et c'est parfait ! ici, ça prouve que les 2 macros sont OK.
la question, ensuite, c'est : pourquoi nos 2 macros ne donnent pas les mêmes résultats dans le 2ème fichier "Remplacer" aussi alors que seules les données sont différentes ? comme en plus ce 2ème fichier est beaucoup moins complexe que le 1er, j'ai vraiment du mal à croire que tu arrives pas à adapter ta propre macro à ce fichier ; elle devrait alors donner les mêmes résultats que les miens !
par « beaucoup moins complexe », je veux dire : « pas de saut entre les lignes car elles se suivent l'une après l'autre, et y'a seulement 9 données, de A2 à A10 » ; alors ne m'dis pas qu'tu trouves que c'est la mer à boire d'adapter ta macro à 9 petites données seulement ! moi, j'y suis pas arrivé ; p't'être à cause d'une erreur d'étourderie ou autre, mais c'est pas ma propre macro ; alors que toi qui en es l'auteur, tu devrais avoir aucun mal à faire ça !
le fichier "Remplacer", c'est celui du demandeur (son post d'hier à 09:57) que j'ai converti en .xlsm ; et pour mes tests, j'ai ajouté une seule donnée 15:12:59,85 (en A10) ; cela car je voulais vérifier qu'ma macro marche aussi pour des données dont le nombre d'heures est autre que 0 (idem pour les minutes).
https://forum.excel-pratique.com/viewtopic.php?p=717222#p717222
dhany
Re,
Même principe :
'jean-eric
Sub Essai2()
Dim n As Long, i As Long, x As String
n = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To n
x = WorksheetFunction.Text(Cells(i, 1).Value, "hh:mm:ss.00")
With Cells(i, 3)
.NumberFormat = "@"
.IndentLevel = 1
.Value = x
End With
Next i
End Sub'dhany
Sub Essai()
Dim n#, h%, m As Byte, s As Byte, c As Byte
Dim dlig&, lig&
Application.ScreenUpdating = 0
dlig = Cells(Rows.Count, 1).End(xlUp).Row
For lig = 2 To dlig
n = Cells(lig, 1) * 24
h = Int(n)
n = (n - h) * 60
m = Int(n)
n = (n - m) * 60
s = Int(n + 0.01)
n = (n - s) * 100
c = Int(n + 0.01)
With Cells(lig, 2)
.NumberFormat = "@"
.IndentLevel = 1
.Value = Format(h, "00") & ":" & Format(m, "00") _
& ":" & Format(s, "00") & "." & Format(c, "00")
End With
Next lig
End Sub@Jean-Eric
ah oui, mais non, là, c'est pas du jeu ! t'as triché !!!
ton code VBA d'avant :
'jean-eric
Sub Essai2()
Dim n As Long, i As Long, x$
n = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To n
x = Split(Cells(i, 1))(0)
x = Val(x) / 86400
x = WorksheetFunction.Text(x, "hh:mm:ss.00")
With Cells(i, 3)
.NumberFormat = "@"
.Value = x
.Font.Bold = True
.Font.Color = vbRed
End With
Next i
End Subest devenu maint'nant celui-ci :
'jean-eric
Sub Essai2()
Dim n As Long, i As Long, x As String
n = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To n
x = WorksheetFunction.Text(Cells(i, 1).Value, "hh:mm:ss.00")
With Cells(i, 3)
.NumberFormat = "@"
.IndentLevel = 1
.Value = x
End With
Next i
End Sub* elle est passée où ton instruction avec Split ? x = Split(Cells(i, 1))(0)
* et ton instruction avec Val() et division par 86400 ? x = Val(x) / 86400
* et le 1er argument de .Text n'est plus (x, mais (Cells(i, 1).Value,
j'risquais pas d'arriver à adapter ton code, hein, avec tous tes changements !
il va de soi que j'te dis rien pour l'aspect cosmétique : plus de gras, ni de rouge : ça, c'est vraiment pas important.
cela dit, comme nos résultats sont (enfin !) exactement les mêmes (et ça jusqu'au dernier chiffre au bout à droite), je peux ENFIN approuver et valider ta (nouvelle) méthode, totalement et sans aucune réserve ! ouf ! ça nous y aura pris l'temps, hein ?
bon, allez, on va pas chipoter : j'mets quand même un ♡ à Jean-Eric !
dhany
Bonjour,
@ dhany,
Au départ les données sont sous forme de texte, d'où Split() pour extraire une sous-chaîne.
Dans ton fichier les données sont numériques !...
Cdlt.
Bonjour Jean-Eric,
j'viens tout juste de lire ton post.
merci pour ta réponse.
dhany
Bonjour,
@ dhany,
Je suis interloqué !... un retour clair, concis et structuré.
Merci de ce retour.
Cdlt.