Problème dépassement capacité

micky01

XLDnaute Occasionnel
bonjour,
J'ai un problème de dépassement de capacité sur un fichier de gestion de stock.
Lorsque je met à jour mon état des stocks, si j'ai une somme de quantité de produits identiques >32 767, il me marque qu'il y a un dépassement de capacité.
Pourtant, j'ai bien déclarer mes variables en Long...
Est ce que quelqu'un voit d'ou peut venir le problème?


Code:
Sub Initialise()
Dim L As Long, L2 As Long, Derlgn As Long, X As Long
Dim TabTemp As Variant
Dim TabResult() As Variant
Dim T_Nombre_Poss As Long
Dim T_Nombre_Moins As Long
Dim Col_Article As Collection
Dim c As Variant

Application.ScreenUpdating = False
Set Col_Article = New Collection
With Worksheets("Mouvement")
  Derlgn = .Range("B65536").End(xlUp).Row
  
If Derlgn < 7 Then Exit Sub
    
    TabTemp = .Range("B7:Q" & Derlgn).Value
    On Error Resume Next
    For L = 1 To UBound(TabTemp, 1)
    Col_Article.Add TabTemp(L, 5), CStr(TabTemp(L, 5))
    Next
    On Error GoTo 0
    Err.Clear
     
     If Col_Article(1) = "" Then Exit Sub
     
For L2 = 1 To Col_Article.Count
ReDim Preserve TabResult(7, X)
  
For L = 1 To UBound(TabTemp, 1)
  
  If TabTemp(L, 5) = Col_Article(L2) Then
         
         Select Case TabTemp(L, 1)
             Case Is = "Entrée"
             T_Nombre_Poss = T_Nombre_Poss + CInt(TabTemp(L, 9))

             Case Is = "Sortie"
             T_Nombre_Moins = T_Nombre_Moins + CInt(TabTemp(L, 9))
         End Select

  End If

  Next
     TabResult(0, X) = Col_Article(L2)
     TabResult(2, X) = CInt(T_Nombre_Poss) - CInt(T_Nombre_Moins) => erreur ici quand je débug

  X = X + 1
  T_Nombre_Moins = 0: T_Nombre_Poss = 0
  
Next
End With


Merci de votre retour

PS : Si il le faut, je peux joindre un fichier simplifié.
 

micky01

XLDnaute Occasionnel
Re : Problème dépassement capacité

Super, merci à vous deux :)

Par contre, la, j'avais simplifié le problème.

Ca m'affiche la même chose lorsque je cherche à afficher le prix de l'article avec le code
Code:
TabResult(3, X) = Format(T_Somme_Poss / CLng(T_Nombre_Poss) * (CLng(T_Nombre_Poss) - CLng(T_Nombre_Moins)), "### ###.00 €")

T_somme_Poss est déclaré en Double.

Avez vous une idée magique pour ça aussi? :eek:

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Problème dépassement capacité

Bonsoir,

peut être voir ce que vaut "T_Somme_Poss " et comment cette variable est définie / initialisée... il y a peut être lieu de déclarer tes variables en "Double" et utiliser la fonction "CDbl" à la place de "CLng", sans plus de détails / fichier, difficile d'en dire plus..
 
G

Guest

Guest
Re : Problème dépassement capacité

Bonjour,
PierreJean:), Pierrot:)

C'est censé me renvoyer une valeur avec 2 chiffres après la virgule.
Clng renvoie des entiers long pas des décimaux.

Code:
TabResult(3, X) = Format(Round((T_Somme_Poss / T_Nombre_Poss) * (CLng(T_Nombre_Poss) - CLng(T_Nombre_Moins)),2), "### ###.00 €")

De toute façon il est mieux de faire tous les calculs en double ou currency et faire les conversions sur le résultat final. Sinon ce dernier risque d'être faut.
A+
 

pierrejean

XLDnaute Barbatruc
Re : Problème dépassement capacité

Re

dans cette ligne

Code:
 TabResult(3, X) = Format(T_Somme_Poss / CCur(T_Nombre_Poss) * (CCur(T_Nombre_Poss) - CCur(T_Nombre_Moins)), "### ###.00 €")

on a une division 0 par 0 :T_Somme_Poss / CCur(T_Nombre_Poss) qu'Excel (a l'instar des mathematiciens) n'apprecie pas
 

micky01

XLDnaute Occasionnel
Re : Problème dépassement capacité

En retournant le problème dans tous les sens, j'ai fini par trouver la division par 0 :/.
Le problème est donc résolu.

Jusqu'au prochain... lol

Merci beaucoup à vous pour vos conseils toujours aussi bons.

A la prochaine ;)
 

Discussions similaires

Réponses
12
Affichages
288

Statistiques des forums

Discussions
312 453
Messages
2 088 555
Membres
103 881
dernier inscrit
malbousquet