niikkoo
Messages postés50Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention 4 septembre 2007
-
22 août 2007 à 12:42
ma3lama -
27 mai 2008 à 19:27
Salut,
voici mon code:
for i=...to
forj=...to
'Calcul de l'incomplet
'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?
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 22 août 2007 à 16:32
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+
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 23 août 2007 à 06:38
salut,
pour que les autres suivent...
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 !
niikkoo
Messages postés50Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention 4 septembre 2007 23 août 2007 à 08:54
salut,
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"
niikkoo
Messages postés50Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention 4 septembre 2007 23 août 2007 à 11:42
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 !!!!)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 23 août 2007 à 20:24
ok, t'es mis2 ou 3 commentaires dans moon code :
Sub nbjhbhjv()
'Calcul de l'incomplet
'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