Extraction d'une partie d'une chaine

re,

à tester,

Sub test()
Dim i As Long, t, t1, t2, t3
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    t = Split(Cells(i, 1), ",")
    t1 = t(0) & "." & t(1)
    t2 = t(2) & "." & t(3)
    Cells(i, "D") = CDbl(t1)
    Cells(i, "E") = CDbl(t2)
    Erase t
Next i
End Sub

Super ...

Peux-tu répondre à la question contenue dans le second message de cette page ...?

Je t'ai placé tes deux formules ... dans les bonnes cellules ...

Merci

Ton fichier ne fait que confirmer que tu as la solution depuis plus de 2 Heures ... !!!

SANS AUCUNE MACRO ... NI POWER QUERY ...

re,

à tester,

Sub test()
Dim i As Long, t, t1, t2, t3
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    t = Split(Cells(i, 1), ",")
    t1 = t(0) & "." & t(1)
    t2 = t(2) & "." & t(3)
    Cells(i, "D") = CDbl(t1)
    Cells(i, "E") = CDbl(t2)
    Erase t
Next i
End Sub

Re,

On y est presque, Merci beaucoup, j'ai une erreur sur cette ligne : Cells(i, "D") = CDbl(t1)

L'erreur est incompatiblité de type

txxovnth

J'ai retiré la conversion de type, j'obtiens presque le résultat, sauf qu'il ne prend pas assez de chiffres :

901,7039203 0,074734305

905,6102713 0,078900022

909,5123949 0,075588281

913,4102912 0,076708611

917,3039602 0,074278374

921,1934018 0,077809648

925,078616 0,078150497

Merci pour l'aide.

On ne sait jamais ...

La troisième fois sera peut-être la bonne ...

Et qui sait ... le fichier sera peut-être même téléchargé ...!!!

4corenthin-v2.xlsx (18.96 Ko)

re,

fait un essai en remplaçant le point par une virgule

re,

fait un essai en remplaçant le point par une virgule

Re,

Même erreur.

Dommâge, sans la conversion en double, j'ai le bon résultat, mais il manque juste quelque chiffres.

On ne sait jamais ...

La troisième fois sera peut-être la bonne ...

Et qui sait ... le fichier sera peut-être même téléchargé ...!!!

Merci beaucoup James, en effet, c'est le résultat attendu.

Cette méthode utilise une formule, c'est vraiment sympa, mais je vais essayer de terminer la classe, on verra ensuite ce qu'on va utiliser.

Si jamais je veux augmenter le nombre de chiffres pour le second résultat, par exemple en prendre 2 ou 3 de plus, je fais comment ?

Encore merci.

re,

quel est le séparateur décimal sur ton poste ?

Merci beaucoup James, en effet, c'est le résultat attendu.

Cette méthode utilise une formule, c'est vraiment sympa, mais je vais essayer de terminer la classe, on verra ensuite ce qu'on va utiliser.

Si jamais je veux augmenter le nombre de chiffres pour le second résultat, par exemple en prendre 2 ou 3 de plus, je fais comment ?

Encore merci.

Ravi que le message soit passé ... même au bout de ... plusieurs tentatives infructueuses ...

La formule est très souple ... si tu veux bien prendre le temps de la comprendre ...

De plus, elle peut très facilement être convertie en UDF ...

Mais bon ... je sens bien que je ne t'apprends rien ...

Re,

La proposition de i20100 revisitée.

Cdlt.

Sub test()
Dim i As Long, t, t1, t2, t3
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        t = Split(Cells(i, 1), ",")
        t1 = t(0) & "." & t(1)
        t2 = t(2) & "." & t(3)
        Cells(i, "D") = Val(t1)
        Cells(i, "E") = Val(Left(t2, 12))
        Erase t
    Next i
End Sub

Merci beaucoup Jean-Eric,

J'ai testé ta solution qui me semble également très bien (merci Isabelle et James pour votre courage et votre patience).

Je vais tester ça demain avec mon collègue, on verra bien.

En tout cas, mille mercis à nouveau, je n'hésiterai pas à revenir demain pour vous dire ce qu'il en est.

Bonne soirée tout le monde.

David

Re,

Ce n'est pas ma solution, mais celle d'Isabelle, qui a bien décelé le souci du point (et de la virgule), donc de l'éventuelle utilisation de la fonction Val() pour résoudre le souci.

Cdlt.

Merci pour ton message de remerciements.

Bonjour à tous les participants de cette discussion.

Je voulais vous remercier, le code fonctionne parfaitement.

Bonne fête du travail.

David

Rechercher des sujets similaires à "extraction partie chaine"