'Cas ou la quantité est réalisée en plusieurs tours
If InStr(cells(i,j).Formula, "=") Then
Dim MesValeurs() As String, l As Long
MesValeurs = Split(beton.Formula, "+")
MesValeurs(LBound(MesValeurs)) = Replace(MesValeurs(LBound(MesValeurs)), "=", vbNullString)
For l = LBound(MesValeurs) To UBound(MesValeurs)
Select Case MesValeurs(l)
Case 0
v = 0
Case Is < 6
v = 6 - MesValeurs(l)
Case Else
u1 = MesValeurs(l) Mod 6
u2 = MesValeurs(l) Mod 7
u3 = MesValeurs(l) Mod 8
mini1 = Min(u1, u2)
v = Min(mini1, u3)
End Select
totalv = cumulp_v
cumulv = cumulp_v + v
cumulp_v = cumulv
next j
next i
quand je renseigne les cellules concernées dans mon tableau excel avec des entiers pas de problème.
Par contre quand je change avec des nombres avec une précision de un chiffre après la virgule...ça déconne (erreur de type 13)
En essayant de forcer un type de données genre u=CDbl(MesValeurs(l)), il me renvoie des valeurs abhérentesex: mesvaleurs(l) 4,5> u=6 !!!!!!
Voyez vous une erreur dans le code?
Désolé mais je pense pas que je puisse t'aider je vois rien de déconnant en tout cas. En plus j'ai du mal à rentrer dans le code vu que je vois pas vraiment ce qu'il y a autour ni ce que tu veux faire.
Je laisse la main à exploreur et je lui fais confiance pour te trouver la bonne solution!
a+
il s'agit d'extraire des données de style =1,2+3
Bref, quand tu commences à Ubound(MesValeurs) (pour la première valeur), n'oublie pas que tu n'as pas un nombre, mais le signe égal puis le nombre. Faut penser à le gérer !
le problème n'est visiblement pas dans la gestion du signe égal... qd je fais un simple controle msgbox sur MesValeurs(i) la sub détecte bien le nombre
ex:
= 4,5+2
j'ai bien
MesValeurs(0) = 4,5
c'est sur le traitement que ça plante => MesValeurs(0) mod 3 => "type mismatch"
Nope
j'avais déjà essayé avant de poster et j'ai le même type d'erreur
Par ailleurs si je me recrée une variable de type
u = CDbl (MesValeurs(i))
avant de faire le traitement j'obtiens des valeurs déconnantes (cf premier post , ex: u(4,5) = 6 !!!!)
'Cas
ou la quantité est réalisée en plusieurs
tours
' *** If
InStr(Cells(i, j).Formula, "=") Then
' ***
manque le End If en bas.
Dim MesValeurs() As String, l As Long
MesValeurs = Split("=4+3+5+7,5", "+")
MesValeurs(LBound(MesValeurs)) = Replace(MesValeurs(LBound(MesValeurs)), "=", vbNullString)
For l = LBound(MesValeurs) To UBound(MesValeurs)
Select Case MesValeurs(l)
Case 0
v = 0
Case Is < 6
v = 6 - MesValeurs(l)
Case Else
'
***********************************************************
' ------> Bah chez moi ça passe nickel !!!
'*
u1 = CDbl(Replace(MesValeurs(l), ",", ".")) Mod 6 '*
u2 = CDbl(Replace(MesValeurs(l), ",", ".")) Mod 7 '*
u3 = CDbl(Replace(MesValeurs(l), ",", ".")) Mod 8 '*
'
***********************************************************
mini1 = Min(u1, u2)
v = Min(mini1, u3)
End Select
' ***
cumulp_v est il dans une autre Sub ou Function ? Si oui, faut nous le
préciser _
car ça peut avoir son
importance ;)
totalv = cumulp_v
cumulv = cumulp_v + v
cumulp_v = cumulv
Next l
End Sub