bonjour,
j'ai une error 1004 "application-defined or object-defined error" qui survient lors de l'exécution de mon code, et je n'arrive pas à en trouver la source.
	
	
	
	
	
		
cette erreur survient lorsque je rajoute l'item "*" & dblZ
lors du débuguage, je vois que ce dblZ est bien attribué, il m'affiche la valeur 0,98 mais l'erreur apparait. elle disparait si j'enlève cet item.
cet item est calculé par une autre macro
	
		
avec la fonction CalculZviaPcTcPT comme suit :
	
	
	
	
	
		
cette fonction me permet de calculer les différents terme d'une équation de degré 3.
vous remarquerez qu'elle fait aussi appel à une autre fonction, DEG3b, qui s'écris tel que :
	
	
	
	
	
		
cette fonction me permettant de résoudre l'équation de degré 3 (dans mon cas particulier).
en exécutant en pas à pas depuis la ligne précédente, je me rends compte que l'exécution repasse par la fonction CalculZviaPcTcPT alors que ce calcul a déjà été fais quelques lignes avant ! pour moi la variable est déjà censé avoir été définie mais elle encore calculée lorsqu'elle apparait dans la ligne de code
De plus, en pas à pas, le code tourne en boucle entre la fonction CalculZviaPcTcPT et DEG3b : arrivé au End Function de CalculZviaPcTcPT, on repars au début de cette même fonction ...
je ne suis pas sûr que l'erreur vienne de là, mais pour moi ce n'est pas normal.
voilà, je sais pas trop où chercher, tout marche très bien, le calcul de dblZ est correct mais dès que je fais appel à ce terme dans le code ça bug
je suis ouvert à tout vos conseils, parce que là je ne vois pas comment faire !
MAJ : en supprimant ces deux macro et en intégrant le calcul de dblZ à la macro initial, l'erreur apparait aussi...
	
		
			
		
		
	
				
			j'ai une error 1004 "application-defined or object-defined error" qui survient lors de l'exécution de mon code, et je n'arrive pas à en trouver la source.
		Code:
	
	
	.Range("R3").Offset(lngNbEvent, intNumTemps * 35).Value = "= -( " & .Range("Q3").Offset(lngNbEvent, intNumTemps * 35).Address _
& "-" & .Range("P3").Offset(lngNbEvent, intNumTemps * 35).Address & ") /" & .Range("O3").Offset(lngNbEvent, intNumTemps * 35).Address & "*" & dblVBout & "*" & dblZ
	cette erreur survient lorsque je rajoute l'item "*" & dblZ
lors du débuguage, je vois que ce dblZ est bien attribué, il m'affiche la valeur 0,98 mais l'erreur apparait. elle disparait si j'enlève cet item.
cet item est calculé par une autre macro
		Code:
	
	
	dblZ = Round(CalculZviaPcTcPT(dblPressCrit, dblTempCrit, dblPress, dblTemp), 6)
	avec la fonction CalculZviaPcTcPT comme suit :
		Code:
	
	
	Function CalculZviaPcTcPT(ByVal Pc#, ByVal Tc#, ByVal P#, ByVal T#)
Dim A, B, q, r, c, d, Pr, Tr As Double
Pr = P / Pc
Tr = T / Tc
A = 0.42747 * Pr / (Tr ^ 2.5)
B = 0.08664 * (Pr / Tr)
q = (B ^ 2) + B - A
r = A * B
c = -q
d = -r
CalculZviaPcTcPT = DEG3b(c, d)
End Function
	cette fonction me permet de calculer les différents terme d'une équation de degré 3.
vous remarquerez qu'elle fait aussi appel à une autre fonction, DEG3b, qui s'écris tel que :
		Code:
	
	
	Function DEG3b(ByVal c#, ByVal d#)
Application.Volatile
Dim B#, A#, P#, q#, r#, s#, rx1#, rx2#, rx3#, ix2#, ix3#
    
    
    A = 1
    B = -1
    
    
    
    B = B / A / 3
    P = B * B - c / A / 3
    q = (B * c - d) / A / 2 - B * B * B
    r = q * q
    s = P * P * P
    If Abs(r - s) < 0.00000000000001 Then
        P = Sgn(q) * Abs(q) ^ (1 / 3)
        rx1 = 2 * P
        rx2 = -P
        rx3 = -P
    ElseIf r < s Then
        If r / s >= 1 Then r = 2 * (1 - Sgn(q)) * Atn(1) Else r = Atn(-q / Sqr(s - r)) + 2 * Atn(1)
        rx1 = Sqr(P) * Cos((r + 8 * Atn(1)) / 3) * 2
        rx2 = Sqr(P) * Cos((r - 8 * Atn(1)) / 3) * 2
        rx3 = Sqr(P) * Cos(r / 3) * 2
    Else
        r = Sqr(r - s)
        P = Sgn(q + r) * Abs(q + r) ^ (1 / 3)
        q = Sgn(q - r) * Abs(q - r) ^ (1 / 3)
        rx1 = q + P
        rx2 = -rx1 / 2
        ix2 = Sqr(3) * (q - P) / 2
        rx3 = rx2
        ix3 = -ix2
    End If
                
    If ix3 = 0 Then
        DEG3b = rx3 - B
    Else
        DEG3b = rx1 - B
    End If
    
    
    'DEG3b = Array(rx1 - b, rx2 - b, ix2, rx3 - b, ix3)
End Function
	cette fonction me permettant de résoudre l'équation de degré 3 (dans mon cas particulier).
en exécutant en pas à pas depuis la ligne précédente, je me rends compte que l'exécution repasse par la fonction CalculZviaPcTcPT alors que ce calcul a déjà été fais quelques lignes avant ! pour moi la variable est déjà censé avoir été définie mais elle encore calculée lorsqu'elle apparait dans la ligne de code
De plus, en pas à pas, le code tourne en boucle entre la fonction CalculZviaPcTcPT et DEG3b : arrivé au End Function de CalculZviaPcTcPT, on repars au début de cette même fonction ...
je ne suis pas sûr que l'erreur vienne de là, mais pour moi ce n'est pas normal.
voilà, je sais pas trop où chercher, tout marche très bien, le calcul de dblZ est correct mais dès que je fais appel à ce terme dans le code ça bug
je suis ouvert à tout vos conseils, parce que là je ne vois pas comment faire !
MAJ : en supprimant ces deux macro et en intégrant le calcul de dblZ à la macro initial, l'erreur apparait aussi...
			
				Dernière édition: