VBA - dépassement de capacité

Gadjo

XLDnaute Nouveau
Bonjour à tous,

Je sais ce que vous disez envoyant ce titre :"Fouille donc le forum avant de poster cf[insérer link]".

Je suis d'avance désolé, j'ai cherché pendant des heures mais aucune solution ne fonctionne à mon problème que voici :

Je travail actuellement sur une macro (domaine que je découvre depuis peu) qui s'arrête pour un "dépassement de capacité". Voici la ligne où la macro s'arrête :


Cells(ligne + nb_passages_boucle, "z").Value = ((Range("DEE_FG_F1001A").Value + Range("DEE_FG_F1001B").Value + Range("DEE_FG_F2001").Value) * PCI_FG_DEE * (Range("COMB_FG_DEE_DENS").Value / 0.7) ^ 0.5 + FO_Ton * (Range("DEE_FO_ProportionRVR").Value * PCI_RVR + (1 - Range("DEE_FO_ProportionRVR").Value) * PCI_FO_P64)) / ((Range("DEE_debit_BRUT").Value + Range("Débit_DEE_TrainB").Value - Range("Débit_DEE_GObaro").Value)) / 10000

Sachant que se sont des valeurs moyenne de capteur à une plage de temps données, pour la plage temps utilisée on peut simplifier à :

Cells(ligne + nb_passages_boucle, "z").Value = (FO_Ton * (Range("DEE_FO_ProportionRVR").Value * PCI_RVR + (1 - Range("DEE_FO_ProportionRVR").Value) * PCI_FO_P64)) / ((Range("DEE_debit_BRUT").Value + Range("Débit_DEE_TrainB").Value )) / 10000

J'ai donc essayé les solutions trouvées à droite à gauche mais sans succès. J'entend par là d'écrire :

Cells(ligne + nb_passages_boucle, "z").Value#
et le premier terme du calcul : FO_Ton#

Ceci étant je ne suis pas sûr de la façon donc j'ai placé mes #, les autres valeurs on été définis en Double et n'ont absolument aucune chance d'en sortir (on parle de débit, températures, PCI,...).

Merci par avance de jetter un coup d'oeill et n'hésitez pas à me demandez si il manque des infos. Je m'y connais pas du tout.
 

Pièces jointes

  • Macro.jpg
    Macro.jpg
    27 KB · Affichages: 39
  • Macro.jpg
    Macro.jpg
    27 KB · Affichages: 46
  • Macro.jpg
    Macro.jpg
    27 KB · Affichages: 50

Pierrot93

XLDnaute Barbatruc
Re : VBA - dépassement de capacité

Bonjour,

sans voir comment sont déclarées, typées et initialisées tes variables difficile d'en dire plus.... préférable de joindre un petit fichier excel avec code complet... plus facile pour t'aider...

bonne journée
@+
 

Gadjo

XLDnaute Nouveau
Re : VBA - dépassement de capacité

Pierrot93 : Je suis désolé c'est un fichier confidentiel et mettre le fichier ici m'est simplement interdit, je peut te dire que les valeurs rentrée sont déclarées en Double et ne dépasseront pas des chiffres excessif même si un capteur tombe en panne (on aurait au pire une division par zéro, facilement identifiable).
La boucle est imbriquée dans une autre boucle. On a une boucle qui permet de changer la plage temporelle et à l'intérieur des boucles pour divers calculs sur différentes unitées à une plage temporelle donnée. Les valeurs sont toutes initialisées dès le lancement de la macro, sauf les valeurs de capteurs qui sont tout simplement supprimé pour être recalculés par la suite.

Roland_M : J'essais ça tout de suite.

Je vous tiens informés
 

Gadjo

XLDnaute Nouveau
Re : VBA - dépassement de capacité

Je vais essayer de faire un truc mais ça va pas être beau, il y a 33 modules avec un millier de ligne de code, des macros qui s'appellent entre elles... Je vais essayer de remonter pour trouver tout ce qu'il faut mais ça sera pas forcément représentatif de ce qu'il se passe, j'ai pris de légère base en VBA depuis 1 semaine qu'on m'a donné ceci à faire.

Merci pour vos réponses en tout cas
 

Gadjo

XLDnaute Nouveau
Re : VBA - dépassement de capacité

Je vous mes en joint un fichier Excel avec le gros du travaill de la macro. J'espère que j'en ai mis assez pour que ce soit compréhensible. (J'ai juste écrit dans le VBA, tableaux vide).

à savoir que:

"Range("XXX").Value" entre 800 et 1100
FO_Ton = 54
les autres grandeurs ("PCI_...") sont de l'ordre de 10 000
 

Pièces jointes

  • Classeur1.xlsm
    14.7 KB · Affichages: 39
  • Classeur1.xlsm
    14.7 KB · Affichages: 42
  • Classeur1.xlsm
    14.7 KB · Affichages: 42
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : VBA - dépassement de capacité

re

avec 2 ou 50 modules
tu déclares tes variables et autres, Public
dans UN seul module de base pour TOUS !

ensuite évidemment il appeler les variables idem dans tous tes modules
après il y a d'autres possibilités de déclarations
mais bon ce serait un peu long à expliquer ici !

edit: Oups ! les messages se sont croisés !
 

Gadjo

XLDnaute Nouveau
Re : VBA - dépassement de capacité

Oui désolé, je l'ai remis. Mauvais format d'enregistrement.

Je sais bien que les variables doivent être déclarée, après je ne connais pas toutes les subtilités. J'ai déclaré exactement comme dans le fichier que vous ai envoyé, le problème persiste.

Je commence à me demander si ce n'est pas la boucle qui serait mal foutue.. Le problème c'est que je lance pour le mois de Stembre un bilan, il me sort bien mes valeurs pour 1er Septembre, et pour le 2nd Septembre le bug apparait. Et pour d'autres mois des fois ça fonctionne, des fois d'autres erreurs peuvent apparaître. Mais c'est un autre problème.
 

Gadjo

XLDnaute Nouveau
Re : VBA - dépassement de capacité

Désolé je serais incapable de faire une macro de ce type, même à titre d'exmple.. Du moins pas pour le moment, je cherche à comprendre comment ça fonctionne dans l'immédiat en me renseignant sur les bases de ce language. Je n'en avais jamais fait, jamais lu.. Dans le pire des cas je vais continuer à me cultiver sur le sujet et reviendrait plus tard apporter des compléments sur mon sujet.

J'aurais une question en plus : Si on fait Range("A1").Value alors que A1 est vide, la valeur renvoyé est bien de zéro ?
 

Roland_M

XLDnaute Barbatruc
Re : VBA - dépassement de capacité

re

tout ceci dans un module déclarée Public

Dim Ligne As Double
Dim nb_passages_boucle As Double
Dim DEE_FG_F1001A As Double
Dim DEE_FG_F1001B As Double
Dim DEE_FG_F2001 As Double
Dim PCI_FG_DEE As Double
Dim COMB_FG_DEE_DENS As Double
Dim FO_Ton As Double
Dim DEE_FO_ProportionRVR As Double
Dim PCI_RVR As Double
Dim PCI_FO_P64 As Double
Dim DEE_debit_BRUT As Double
Dim Débit_DEE_TrainB As Double
Dim Débit_DEE_GObaro As Double


et ceci:
Dim Ligne As Double
s'il s'agit d'entier:
Dim Ligne As Long

EDIT: si range()=""
A$ = Range("A1").Value (A$="")
A = Range("A1").Value (A=0)
 
Dernière édition:

Gadjo

XLDnaute Nouveau
Re : VBA - dépassement de capacité

Ce module dit Public signifie que ce qui est dit dedans est valable dans toutes les commandes qui s'en suivent c'est bien ça ? Mais en changeant de module dans notre projet, le module Public du module1 valable dans notre module2 ou sont-ils indépendants ?
 

Discussions similaires

Réponses
6
Affichages
1 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 525
dernier inscrit
gbaipc