Simple calcul qui bug en VBA
Résolu
Jack
-
Jack -
Jack -
Bonjour,
J'ai une macro qui effectue des calculs et me stocke les résultats dans 3 tableaux, ensuite je somme pour chacun de ces tableaux tous les éléments entre eux et j'affiche le total. Pour le tableau 1 et 2 pas de problème mais pour le 3, je ne sais pas pourquoi ça affiche 0.
Voici le fichier test: http://cjoint.com/?3HCl53TYWod
Merci d'avance
J'ai une macro qui effectue des calculs et me stocke les résultats dans 3 tableaux, ensuite je somme pour chacun de ces tableaux tous les éléments entre eux et j'affiche le total. Pour le tableau 1 et 2 pas de problème mais pour le 3, je ne sais pas pourquoi ça affiche 0.
Voici le fichier test: http://cjoint.com/?3HCl53TYWod
Merci d'avance
A voir également:
- Simple calcul qui bug en VBA
- 14 simple - Guide
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Bug chromecast - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
3 réponses
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
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.
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.