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
A voir également:
- Transformer YxZ = resulat
- Transformer une image en icone - Guide
- Transformer majuscule en minuscule word - Guide
- Transformer epub en kindle - Guide
- Transformer un gif en vidéo - Guide
- Transformer clavier qwerty en azerty - Guide
2 réponses
bonjour,
on doit pouvoir simplifier ton code
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
on doit pouvoir simplifier ton code
Function 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
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
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
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