Simple calcul qui bug en VBA
Résolu/Fermé
A voir également:
- Simple calcul qui bug en VBA
- Bug yahoo mail - Guide
- Calcul moyenne excel - Guide
- Iphone 14 simple - Guide
- Logiciel calcul plancher bois gratuit - Télécharger - Architecture & Déco
- Facebook rencontre bug - Forum Facebook
3 réponses
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 211
28 août 2012 à 12:12
28 août 2012 à 12:12
Bonjour,
C'est par fatigue que tu ne donnes aucun détail ou c'est parce que tu préfères que personne ne regarde ?
eric
C'est par fatigue que tu ne donnes aucun détail ou c'est parce que tu préfères que personne ne regarde ?
eric
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 211
Modifié par eriiic le 28/08/2012 à 13:55
Modifié par eriiic le 28/08/2012 à 13:55
Re,
Dim line_insertion, e1, e2, e3 As Long
Seul e3 est déclaré As Long, les autres sont Variant (c'est pour ça qu'ils fonctionnent).
Tu dois déclarer ces variables As Double (décimal double précision) en non Long (entier long)
Dim line_insertion As Long, e1 As Double, e2 As Double, e3 As Double
(non testé...)
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Dim line_insertion, e1, e2, e3 As Long
Seul e3 est déclaré As Long, les autres sont Variant (c'est pour ça qu'ils fonctionnent).
Tu dois déclarer ces variables As Double (décimal double précision) en non Long (entier long)
Dim line_insertion As Long, e1 As Double, e2 As Double, e3 As Double
(non testé...)
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
28 août 2012 à 12:43
C'est vrai que j'ai ete un peu succint, la fatigue doit y etre pour quelque chose^^
Voici le programme:
Sub BestMethod()
Dim shList As Worksheet
Dim line_insertion, e1, e2, e3 As Long
Dim tab_bd
Dim err1
Dim err2
Dim err3
Set shList = Workbooks("ex.xlsm").Worksheets("List")
shList.Activate
e1 = 0
e2 = 0
e3 = 0
line_insertion = 0
ReDim tab_bd(0)
'Enregistrement des numeros de lignes des SubCategory
For i = 3 To [b3].End(xlDown).Row
If Cells(i, 1) <> "" Then
ReDim Preserve tab_bd(line_insertion)
tab_bd(line_insertion) = Cells(i, 1).Row
line_insertion = line_insertion + 1
End If
Next i
For i = 0 To UBound(tab_bd) - 1
ReDim err1(0)
ReDim err2(0)
ReDim err3(0)
line_insertion = 0
For j = tab_bd(i) To tab_bd(i + 1) - 1
If Cells(j, 6) <> "" Then
ReDim Preserve err1(line_insertion)
ReDim Preserve err2(line_insertion)
ReDim Preserve err3(line_insertion)
err1(line_insertion) = (Cells(j, 6) - Cells(j, 3)) ^ 2 / 2
err2(line_insertion) = (Cells(j, 6) - Cells(j, 4)) ^ 2 / 2
err3(line_insertion) = (Cells(j, 6) - Cells(j, 5)) ^ 2 / 2
line_insertion = line_insertion + 1
End If
Next j
For k = 0 To UBound(err1)
e1 = e1 + err1(k)
e2 = e2 + err2(k)
e3 = e3 + err3(k)
Next k
MsgBox e1 & " " & e2 & " " & e3
Next i
End Sub
Les 3 tableaux dont je parlais précédemment sont err1, err2 et err3. Pour chaque ligne de mon tableur, j'effectue 3 calculs du type (a-b)^2/2 dont j'enregistre le résultat dans les 3 tableaux dynamiques précédent.
Ensuite, pour chaque tableau je somme tous les termes et j'affiche les 3 résultats (e1, e2 et e3).
ça marche très bien sauf pour e3 qui est égal a 0 alors qu'il devrait être égal a 0.0212.
Voila le problème.
J'espère avoir été assez clair.
PS: pour tout ce qui concerne la partie avec tab_bd, c'est simplement pour parcourir toute ma liste car dans le fichier originale je suis obligé de procéder ainsi.