Extraire des chiffre d'une cellule

Bonjour,

J'essais de créer un code vba afin de pouvoir retirer de l'information d'une cellule et la mettre dans une nouvelle colonne. Voici l'information typique que contient mes cellules:

P_1_6_15_460_SHS40x40x2.66_100_N

Je voudrais, dans 3 colonnes différentes, avoir 40, 40 et 2.66. Il est a noté que les cellules ne contiennent pas toujours le même nombre de caractères. On pourrait avoir: P_1_6_15_460_SHS100x40x2_100_N. Je dois passer par vba vu le grand nombre de données que je souhaite traiter.

Voici le code que j'ai tenté de faire:

la fonction:

Function Extract(name As String, Optional first As String = " ", Optional final As String = " ")

On Error GoTo FunctionErr

If InStr(1, name, first) = 0 Then

Extraxt = CVErr(x1ErrNA)

Exit Function

Else

position_first = InStr(1, name, first) + Len(frist)

End If

If final = "" Then

position_final = Len(name)

Else

position_final = InStr(1, name, final) - 1

End If

Extract = Mid(name, position_first, position_last - position_first + 1)

Exit Function

FunctionErr:

Extract = CVErr(x1ErrNA)

End Function

La partie du code qui concerne cette étape:

For Line = 3 To last

Dim name As String

Dim first As String

Dim final As String

name = Sheets("Full_DB").Cells(Line, 1)

first = "SHS"

final = "x"

h_nominal = Extract(name, first, final)

FL1.Cells(Line, 5).Value = h_nominal

Next Line

Le problème semble être causé par "name".

Merci

Bonjour,

les chiffres à récupérer sont ils toujours précédés du texte "SHS" ?

Oui

re,

à tester,

Sub test()
t = Split(Range("A1"), "x")
v0 = Val(Right(t(0), 2))
v1 = Val(t(1))
v2 = CDbl(Split(t(2), "_")(0))
End Sub

Le code fonctionne, merci cela va m'avancer! Il faut juste que je trouve un moyen que le code sorte 2 ou 3 chiffres dépendamment du nombre de chiffre...

 Il faut juste que je trouve un moyen que le code sorte 2 ou 3 chiffres dépendamment du nombre de chiffre...

ça devrait fonctionner indépendamment du nombre de chiffre,

si les chiffres sont séparer par un "x" et le dernier par "_"

Effectivement, mais ce n'est pas le cas pour les premiers chiffres. Le v0 prend 2 chiffre avant le x, mais parfois il y en a trois.

Et le dernier trouble que j'ai, c'est pour le v2, parfois j'ai des valeurs comme 2.66 et on me renvoit 266. Je ne sais pas pourquoi le "." disparaît.

oups, j'oubliais le 1er split,

Sub test()
t0 = Split(Range("A1"), "SHS")(1)
t = Split(t0, "x")
v0 = Val(t(0))
v1 = Val(t(1))
v2 = CDbl(Split(t(2), "_")(0))
End Sub

Parfait, merci beaucoup!

Re bonjour,

J'ai un nouveau problème avec mon code. Voici la partie du code qui est concernée:

Sub test()

For line = 3 To last

t0 = Split(Sheets("Full_DB").Cells(Line, 1), "HS")(1)

t = Split(t0, "x")

v0 = Val(t(0))

v1= Val(t(1))

v2 = CStr(Split(t(2), "_")(0))

Next line

End Sub

J'avais changé le CDbl pour CStr parce que le dernier chiffre qui s'affichait pour le v2 ne prenait pas en compte le . de 2.66 dans l'énoncé: G_3_1_15_460_SHS40x40x2.66_N. Alors ce qui s'affichait était 266. Avec string, j'ai la bonne valeur qui s'affiche, mais lorsque je dois faire des opérations par la suite, la valeur redevient 266 et non 2.66. Est-ce qu'il y a un type de variable plus approprié pour mon code. Je ne comprends pas pourquoi Double ne veut pas considérer le . ?

Merci

re,

est ce que le même problème se produit sur ce fichier ?

le résultat est mit en cellule B2:D2

oui, c'est encore 266.

re,

est ce que tu as coché le Calcul itératif ?

excel calcul iteratif

Non, mais j'ai des cellules cochées plus bas qui ne le sont pas dans votre image.

re,

essai avec

Cells(2, 4) = Split(t(2), "_")(0) * 1

Je n'y arrive pas plus...

Est-ce que ce code fonctionne pour vous?

Est-ce que ce code fonctionne pour vous?

oui,

peux-tu joindre ton fichier ?

C'est un gros fichier alors voici un extrait.

Rechercher des sujets similaires à "extraire chiffre"