Transformer ZxY = résultat de Z*Y

bocman -  
 bocman -
Bonjour,

voila mon problème

j'ai une cellule "NB" qui contient soit une valeur numérique soit du texte sous la forme Z x Y ou Z et Y sont des numériques

j'aimerai dans la cellule "NB_HA" récupérer la valeur numérique de la cellule "NB"

donc Si "NB" est numérique "NB_HA" = "NB"
Sinon "NB" est décomposé
On récupérer Z on transforme x en * on récupère Y et on fait le produit de Z par Y

pour cela j'ai commencer à faire un programme VBA

' transforme les donnée de la colonne NB_HA de la feuille extraction en valeur numérique; Exemple: z et Y sont des valeur numerique si dans ma cellule j'ai ZxY ou ZXY je veux le resultat de la mutlitplication
Function NB_HA(NB As Variant)
Dim i As Integer, Caractere As String, x As Integer, y As Integer, Operateur As String, chaine As Variant
If NB <> 0 Then
If IsNumeric(NB) Then
NB_HA = NB
Else
chaine = NB
i = 1
Do
Caractere = Mid(chaine, 1, 1)
i = i + 1
Loop Until Not IsNumeric(Caractere)
x = CInt(Left(chaine, i - 2))
y = CInt(Right(chaine, Len(chaine) - i + 1))
Operateur = Mid(chaine, i - 1, 1)
Select Case Operateur
Case "+": resultat = x + y
Case "X": resultat = x * y
Case "x": resultat = x * y
End Select
NB_HA = resultat
End If
End If

End Function

mais il ne marche pas encore

A voir également:

2 réponses

chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bonjour,

quand tu dis "il ne marche pas encore", que se passe-t-il ? Tu obtiens un message d'erreur ? Si oui lequel ? Ou bien rien ne s'exécute ?

Merci de répondre à ces questions pour que nous puissions t'aider.

Cordialement.
0
bocman
 
ha oui merci je n'avais pas vu cette erreur maintenant ça marche
0
le père
 
Bonjour

Caractere = Mid(chaine, 1, 1) 
Tu analyses toujours le premier caractère de la chaine, il faudrait faire
Caractere = Mid(chaine, i, 1) 
0