Transformer YxZ = resulat
bocman
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
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
cependant je n'arrive pas à faire marcher le programme si X et vide ou Y et vide
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, calcul As Variant
If NB <> 0 Then
If IsNumeric(NB) Then
NB_HA = NB
Else
chaine = NB
i = 1
Do
Caractere = Mid(chaine, i, 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 calcul
Case x = 0
Select Case Operateur
Case "+": resultat = y
Case "X": resultat = y
Case "x": resultat = y
End Select
Case y = 0
Select Case Operateur
Case "+": resultat = x
Case "X": resultat = x
Case "x": resultat = x
End Select
Case x <> 0 And y <> 0
Select Case Operateur
Case "+": resultat = x + y
Case "X": resultat = x * y
Case "x": resultat = x * y
End Select
End Select
NB_HA = resultat
End If
End If
End Function
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
cependant je n'arrive pas à faire marcher le programme si X et vide ou Y et vide
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, calcul As Variant
If NB <> 0 Then
If IsNumeric(NB) Then
NB_HA = NB
Else
chaine = NB
i = 1
Do
Caractere = Mid(chaine, i, 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 calcul
Case x = 0
Select Case Operateur
Case "+": resultat = y
Case "X": resultat = y
Case "x": resultat = y
End Select
Case y = 0
Select Case Operateur
Case "+": resultat = x
Case "X": resultat = x
Case "x": resultat = x
End Select
Case x <> 0 And y <> 0
Select Case Operateur
Case "+": resultat = x + y
Case "X": resultat = x * y
Case "x": resultat = x * y
End Select
End Select
NB_HA = resultat
End If
End If
End Function
2 réponses
-
bonjour,
on doit pouvoir simplifier ton codeFunction NB_HA(NB) Dim i As Integer, Operateur As String, x, y If IsNumeric(NB) Then NB_HA = NB Exit Function End If i = 0 Do i = i + 1 Operateur = Mid(NB, i, 1) Loop Until Not IsNumeric(Operateur) Or i = Len(NB) x = CInt(Left(NB, i - 1)) y = CInt(Right(NB, Len(NB) - i)) Select Case Operateur Case "+": NB_HA = x + y Case "-": NB_HA = x - y Case "*": NB_HA = x * y Case "/" If y <> 0 Then NB_HA = x / y Else NB_HA = "erreur" End If Case Else: NB_HA = "erreur" End Select End Function
RQ1. ce code suppose que l'expression entrée est du type entier ou entier1 signe operation entier2
RQ2. If reste à définir et à coder les cas d'expressions incorrectes que tu comptes traiter
bonne suite-
je me suis mal exprimer
dans ma cellule
NB je peu avoir different cas, soit :
Y+ Z
+Y
Y +
Y x Z
x Z
Y x
donc je voudrait récupérer le resultat
car sir je mais juste
' 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
ça ne marche que pour les cas ou X et Z contiennent qqch
Dans les cas je n'ai que soit xY ou +Y ou Z+ ou Zx, cela ne marche pas
-
-
re
c'est bien ce que j'ai dit dans mes RQ1 et RQ2.
pour ce qui est du traitement des exceptions, un début de réponse .. et à toi de compléter
https://www.cjoint.com/?0Bqu3O7VTr0
bonne suite