Ligne ignorée dans la macro [VBA/EXCEL] - VB/VBA/VBS - Programmation
Marsh Posté le 09-07-2007 à 13:10:54
Il faut copier/coller au moins une partie de ton code pour que l'on sache exactement les instructions en cause.
Marsh Posté le 09-07-2007 à 14:29:07
| tegu a écrit : Il faut copier/coller au moins une partie de ton code pour que l'on sache exactement les instructions en cause. | 
 
 
OK, j'essayais d'etre clair pour éviter la lecture du code, 
 
Le voici: 
 
     
'*****CALCUL DES TEMPS 
     
' Calcul du temps de référence 
    Cells(ligne, 42).Select 
    ActiveCell.FormulaR1C1 = "=RC[-9]*RC[-25]" 
     
' Valeur par défaut la Fréquence fixée à 1 
    Cells(ligne, 47).Select 
    ActiveCell.Value = 1 
 
' Calcul temps VA et non VA 
    If Cells(ligne, 19) = 1 Then 
    Cells(ligne, 33) = 1 
    Cells(ligne, 22).Select 
    ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-5]*RC[+11]" 
    Else 
    Cells(ligne, 23).Select 
    ActiveCell.Value = Cells(ligne, 42) 
    End If 
     
'Calcul temps Non VA 
'    Cells(ligne, 23).Select 
'    If Cells(ligne, 19) = 0 Then 
'    ActiveCell.FormulaR1C1 = "" 
'    Else 
'    ActiveCell.FormulaR1C1 = "0" 
'    End If 
 
 
' Valeur par défaut des DP fixée à 1.13 pour coudre et 1.1 pour les autres 
    If Cells(ligne, 8) = "COUDRE" Then 
    Cells(ligne, 45).Select 
    ActiveCell.Value = 1.13 
    Else 
    Cells(ligne, 45).Select 
    ActiveCell.Value = 1.1 
    End If 
     
' Calcul de la valeur T.O. 
    Cells(ligne, 44).Select 
'ici on multiplie par 1, qui est le coefficient d'irrégularité 
    ActiveCell.FormulaR1C1 = "=RC[-2]*1" 
     
 
 
' Calcul de la valeur T.H. 
    Cells(ligne, 46).Select 
    ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]" 
 
    xxxxx 
'Calcul de la valeur Temps Alloué 
    Cells(ligne, 48).Select 
    ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]" 
     
         
'Calcul Temps FERT en Seconds 
    If Cells(ligne, 49) = "" Then 
    ActiveCell.FormulaR1C1 = "0" 
    Else 
    Cells(16, 96).Select 
    ActiveCell.Copy 
    Cells(ligne, 96).Select 
    ActiveCell.PasteSpecial 
    End If 
     
'Calcul Temps Alloués Seconds 
    If Cells(ligne, 96) > 0 Then 
    ActiveCell.FormulaR1C1 = "0" 
    Else 
    Cells(16, 95).Select 
    ActiveCell.Copy 
    Cells(ligne, 95).Select 
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ 
         SkipBlanks:=False, Transpose:=False: 
    End If 
     
'*******FIN DU CALCUL DES TEMPS 
     
 
 
Tout ce qui est en dessous de XXX ne se fait pas, je ne sais pas pourquoi. 
 
Petite remarque quand même: j'ai des zéro dans les cellules, donc il y a une partie qui est prise en compte, mais les opérations ne se font pas 
 
Merci
Marsh Posté le 09-07-2007 à 21:32:58
Pour tes deux derniers calculs, s'il y a des zéros, cela veut dire que ton test sur Cells(ligne, 49) n'est pas bon. 
As-tu essayé d'exécuter ton code en pas-à-pas pour voir ?
Marsh Posté le 10-07-2007 à 10:14:29
| tegu a écrit : Pour tes deux derniers calculs, s'il y a des zéros, cela veut dire que ton test sur Cells(ligne, 49) n'est pas bon.  | 
 
 
Bonjour, 
 
J'ai essayé le mode pas à pas... le problème c'est qu'il bloque avant les calculs car la macro "jongle" entre diférents fichiers (windowsXXX.activate) et que je n'arrive pas à le faire en pas à pas. 
 
J'arrive à comprendre qu'il puisse y avoir des erreurs sur les test (pour les 2 derniers cacluls), mais pas pour celui d'au dessus (juste en dessous des croix rouges). 
 
Comme les calculs se suivent, il est normal que les deux derniers buguent. Mais c'est surtour celui juste en dessous des croix qui me gène. Je n'arrive vraiment pas à comprendre.  
 
 
Je peux éventuellement faire une autre macros pour ces derniers calculs... mais j'aimerai ne pas en arriver là 
 
Merci 
Marsh Posté le 10-07-2007 à 10:34:48
En bloquant les recalculs automatiques de toute la feuille ( Application.Calculation = xlCalculationManual ) 
et en n'executant le calcul que sur les cellules concernées, ( Range("truckivabien" ).Calculate ), ca donne quoi ? 
 
Sinon, modifie tes  
    Cells(ligne, 45).Select  
    ActiveCell.Value = 1.1  
directement en :  
    Cells(ligne, 45).Value = 1.1 
Marsh Posté le 11-07-2007 à 12:33:25
| dante4024 a écrit : En bloquant les recalculs automatiques de toute la feuille ( Application.Calculation = xlCalculationManual )  | 
 
 
Merci, je vais essayer ça et je vous tiens au courant, pas mal de taff au boulot aujourd'hui 
 
Marsh Posté le 09-07-2007 à 11:40:19
salut à tous,
J'ai un problème avec une macro sous Excel 2003
J'ai écrit mes lignes, mais il semble que certaines lignes soient ignorées. En fait j'effectue une série de calcul à la suite, mais a partir d'un certain nombres, ils ne sont plus faits.
exemple:calcul a
calcul b
...
calcul j
calcul k
...
Excel effectue les calculs jusqu'à j, mais s'arrete à k
Quand je déplace par exemple calcul j à calcul l plus haut (après calcul c par exemple) Excel effectue ces calculs, mais s'arrete un peu plus loin. J'ai l'impression qu'il ne peut effectuer qu'un certain nombre de calculs; c'est possible?
Pour information, j'effectue une vingtaine de calculs seulement
Merci de m'aider
a+