comment traduire SI(AV4;DECALER(AO4;AV4;-36)-E4;"")en vba ?

A

albert

Guest
Bonsoir à tous et à toutes,

J’ai tenté de comprendre la formule excel pour la traduire en vba
=SI(ESTNUM(AV4);DECALER(AO4;AV4;-36)-E4;"")
j’ai trouvé
=SI(AV4;DECALER(AO4;AV4;-36)-E4;"")

SI() = IF()
DECALER() = Offset()
C’est bien jusque là, mais que veut dire AV4 après SI
Et pourquoi AO4 :AV4 ???

... je patauge depuis un moment

Merci d'avance à qui me sortira de là

albert
 

Pièces jointes

  • ColAO.zip
    2.7 KB · Affichages: 18
  • ColAO.zip
    2.7 KB · Affichages: 22
  • ColAO.zip
    2.7 KB · Affichages: 19
A

albert

Guest
Merci Jean-Marie, je me prenais les pieds dans l’tapis, je ne suis pas très à l’aise avec les formules excel
Maintenant ça marche

Sub colO()
'if (AV4 > 0, range("AO4").offset(AV4, -36) - range("E4"), "")
'AV=48
'AO=41
'--------installe un compteur en A1---------
c = Range("E4", Range("E4").End(xlDown)).Count
d = Cells(1, 1) - 4
For R = 4 To d
If Cells(R, 48) > 0 Then

Cells(R, 51) = Cells(R, 41).Offset(R, -37) - Cells(R, 5)

End If
Next
End Sub
 
J

Jean-Marie

Guest
Bonjour

Dans ma traduction il y a une erreur
Iif (Range("AV4") > 0, range("AO4").offset(range("AV4"), -36) - range("E4"), "")
Ce qui a provoqué ton erreur.

Remplace donc la ligne par celle ci.
Cells(R, 51) = Cells(R, 41).Offset(Cells(R, 48), -37) - Cells(R, 5)

@+Jean-Marie
 
A

albert

Guest
J’ai bien écrit, comme tu le proposes
Cells(R, 51) = Cells(R, 41).Offset(Cells(R, 48), -37) - Cells(R, 5)
Iif (Range("AV4") > 0, range("AO4").offset(range("AV4"), -36) - range("E4"), "")
Ça semble correspondre à la formule excel
Mais dans la colonne AX, je n’obtiens pas le même résultat qu’en AO ou AX …

Tu crois qu’il y a une solution ???
 

Pièces jointes

  • ColAO.zip
    8.1 KB · Affichages: 23
  • ColAO.zip
    8.1 KB · Affichages: 22
  • ColAO.zip
    8.1 KB · Affichages: 24
A

albert

Guest
Jean-Marie, ta formule fonctionne bien :

Sub test()
If Range("AV6") > 0 Then
Range("AW6") = Range("AO6").Offset(Range("AV6"), -36) - Range("E22")
End If
End Sub

il ne me reste plus qu'à faire des boucles

merci du coup d'main !

(tu as dû remarquer mon niveau nul en excel)

albert
 
A

albert

Guest
ce qui donne :

Sub test()
AV = 48
'AO=41
AW = 49
'--------installe un compteur en A1---------
c = Range("E4", Range("E4").End(xlDown)).Count
Cells(1, 1) = c
d = Cells(1, 1) - 4
For R = 4 To d + 4
If Cells(R, 48) > 0 Then
Cells(R, 49) = Cells(R, 41).Offset(Cells(R, 48), -36) - Cells(R, 5)
End If
Next
End Sub

ce fut laborieux, mais j'y suis arrivé !
 

Discussions similaires

Statistiques des forums

Discussions
312 328
Messages
2 087 321
Membres
103 515
dernier inscrit
Cherbil12345