VBA programme qui calcul une chaine de caract
Boc
-
JP -
JP -
Bonjour,
J'avais créer un programme qui me perté de calculer P x T avec P et T des nombre et x et un caractère.
mais je voudrais essayer de calculer P x T x R avec P, T et R des nombre et x et un caractère.
Voici mon programme.
' cette fonction permet de déterminer le nombre de barre
' on a besoin de 5 paramètres qui sont dans l'ordre le nombre de barre, savoir si on à des attentes, connaitre le mètre linéaire des attentes, et connaitre l'éspacement
Function NB_HA(Nb As Variant)
' endroit ou l'on va stocker pendant l'éxécution du programme
Dim i As Integer, Caractere As String, X As Integer, y As Integer, z As Integer, Operateur As String, chaine As Variant, calcul As Variant
'si il y a une erreur on continue
On Error Resume Next
If IsNumeric(Nb) Then
'NB_HA est égale a cette valeur à laquelle on ce débarrasse du signe + en lui effectuant une opération "*1 +0 "
NB_HA = (Nb * 1) + 0
Else
' sinon si ce n'est pas une valeur numérique
chaine = Nb
i = 1
' on créer une boucle qui va récupérer les valeurs avant le signe opérateur et après
Do
' caractère correspondant au nombre récupére
Caractere = Mid(chaine, i, 1)
i = i + 1
Loop Until Not IsNumeric(Caractere)
'x récupère les valeurs avant le signe opérateur
X = CInt(Left(chaine, i - 2))
' y récupère les valeurs après le signe opérateur
y = CInt(Right(chaine, Len(chaine) - i + 1))
Operateur = Mid(chaine, i - 1, 1)
y = CInt(Right(chaine, Len(chaine) - i + 2))
Operateur = Mid(chaine, i - 1, 2)
' si les valeurs en y sont 0 alors le résultat NB_HA donnera juste les valeurs trouvé par x
If y = 0 Then
NB_HA = X
Else
' inversement,si les valeurs en x sont 0 alors le résultat NB_HA donnera juste les valeur trouvé par y
If X = 0 Then
NB_HA = y
' sinon si x et y contiennent quelque chose alors on transformet les signes + en + x en * et X en * selon le cas que l'on a
Else
Select Case Operateur
Case "+": NB_HA = X + y + z
Case "X": NB_HA = X * y * z
Case "x": NB_HA = X * y * z
End Select
End If
End If
End If
End Function
J'avais créer un programme qui me perté de calculer P x T avec P et T des nombre et x et un caractère.
mais je voudrais essayer de calculer P x T x R avec P, T et R des nombre et x et un caractère.
Voici mon programme.
' cette fonction permet de déterminer le nombre de barre
' on a besoin de 5 paramètres qui sont dans l'ordre le nombre de barre, savoir si on à des attentes, connaitre le mètre linéaire des attentes, et connaitre l'éspacement
Function NB_HA(Nb As Variant)
' endroit ou l'on va stocker pendant l'éxécution du programme
Dim i As Integer, Caractere As String, X As Integer, y As Integer, z As Integer, Operateur As String, chaine As Variant, calcul As Variant
'si il y a une erreur on continue
On Error Resume Next
If IsNumeric(Nb) Then
'NB_HA est égale a cette valeur à laquelle on ce débarrasse du signe + en lui effectuant une opération "*1 +0 "
NB_HA = (Nb * 1) + 0
Else
' sinon si ce n'est pas une valeur numérique
chaine = Nb
i = 1
' on créer une boucle qui va récupérer les valeurs avant le signe opérateur et après
Do
' caractère correspondant au nombre récupére
Caractere = Mid(chaine, i, 1)
i = i + 1
Loop Until Not IsNumeric(Caractere)
'x récupère les valeurs avant le signe opérateur
X = CInt(Left(chaine, i - 2))
' y récupère les valeurs après le signe opérateur
y = CInt(Right(chaine, Len(chaine) - i + 1))
Operateur = Mid(chaine, i - 1, 1)
y = CInt(Right(chaine, Len(chaine) - i + 2))
Operateur = Mid(chaine, i - 1, 2)
' si les valeurs en y sont 0 alors le résultat NB_HA donnera juste les valeurs trouvé par x
If y = 0 Then
NB_HA = X
Else
' inversement,si les valeurs en x sont 0 alors le résultat NB_HA donnera juste les valeur trouvé par y
If X = 0 Then
NB_HA = y
' sinon si x et y contiennent quelque chose alors on transformet les signes + en + x en * et X en * selon le cas que l'on a
Else
Select Case Operateur
Case "+": NB_HA = X + y + z
Case "X": NB_HA = X * y * z
Case "x": NB_HA = X * y * z
End Select
End If
End If
End If
End Function
A voir également:
- VBA programme qui calcul une chaine de caract
- Programme demarrage windows - Guide
- Plus de chaine tv - Guide
- Chaine tnt gratuite sur mobile - Guide
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
1 réponse
Bonjour,
exemple de code pour 3 nombres, que vous pourrez faire evoluer pour x nombres
Bonne suite
exemple de code pour 3 nombres, que vous pourrez faire evoluer pour x nombres
Function NB_HA(Nb As Variant)
Dim Nb As Variant, Chaine As Variant
If IsNumeric(Nb) Then
'NB_HA est égale a cette valeur à laquelle on se débarrasse du signe +
'en lui effectuant une opération "*1 +0 "
NB_HA = (Nb * 1) + 0
Else
Chaine = UCase(Nb)
If InStr(1, Chaine, "+") > 0 Then
Carcherch = "+"
ElseIf InStr(1, Chaine, "X") Then
Carcherch = "X"
Else
MsgBox "erreur d'operateur!!!!!!"
Exit Function
End If
pos = 0
pos1 = 0
pos2 = 0
For i = 1 To Len(Chaine)
pos = InStr(i, Chaine, Carcherch)
X = Val(Left(Chaine, pos - 1))
debut = pos + 1
i = debut
pos1 = InStr(i, Chaine, Carcherch)
If pos1 = 0 Then
y = Val(Mid(Chaine, debut, Len(Chaine)))
Exit For
Else
y = Val(Mid(Chaine, debut, pos1 - debut))
End If
debut = pos1 + 1
i = debut
pos1 = InStr(i, Chaine, Carcherch)
If pos2 = 0 Then
z = Val(Mid(Chaine, debut, Len(Chaine)))
Exit For
Else
z = Val(Mid(Chaine, debut, pos1 - debut))
End If
'a continuer pour un nombre suivant
Next
'Calcul en fonction des valeurs de x,y,z
If Carcherch = "+" Then
NB_HA = X + y + z
ElseIf Carcherch = "X" Then
If X > 0 And y > 0 And y > 0 Then
NB_HA = X * y * z
ElseIf X < 1 And y > 0 And z > 0 Then
NB_HA = y * z
ElseIf X < 1 And y < 1 And z > 0 Then
NB_HA = z
ElseIf X < 1 And y > 0 And z < 1 Then
NB_HA = y
ElseIf X > 0 And y < 1 And z < 1 Then
NB_HA = X
ElseIf X > 0 And y < 1 And z > 0 Then
NB_HA = X * z
ElseIf X > 0 And y > 0 And z < 1 Then
NB_HA = X * y
ElseIf X < 1 And y < 1 And z < 1 Then
NB_HA = 0
Else
End If
Else
End If
End If
End Function
Bonne suite
JP
Merci