Comment imbriquer toutes ces conditions en VBA ??

A

albert

Guest
bonsoir à tous et à toutes, forumiens, forumiennes,

avec cette formule excel,

'=SI(AZ782<>"";SI(AZ782-DECALER(AQ782;P782;-38);SI(P782<R782;AZ782-DECALER(AQ782;P782;-38);""));"")

je tente de traduire en vba.

Dans la pièce jointe, il y a une tentative d'écriture de code;

Dans ce code vba, après Then, je dois mettre une valeur dans une cellule. Je suppose qu’il s’agit de Cells(782, 43) = 0, puisque à la fin des conditions dans la formule excel, il y a ;"")
ce qui donne :

If Cells(782, 48) <> 0 Then
Cells(782, 43) = 0
ElseIf Cells(782, 48) - Cells(782, 43).Offset(Cells(782, 16), -38) Then
Cells(782, 43) = 0
ElseIf Cells(782, 16) < Cells(782, 18) Then
Cells(782, 43) = 0
ElseIf Cells(782, 48) - Cells(782, 43).Offset(Cells(782, 16), -38) Then
Cells(782, 43) = 0
End If

---
En AQ782, j’obtiens 0.00, alors que je devrais avoir –3, comme en BA782

----
mille mercis d'avance à qui saura me sortir de là (pour trouver -3 en AQ782)

...sans vouloir abuser...
(encore un drôle de challenge)

albert
 

Pièces jointes

  • ColAQ.zip
    47.4 KB · Affichages: 34
A

Abel

Guest
Bonsoir albert, le forum,

Si tes informations sont toujours aux mêmes places dans ta feuille, utilise plutôt Range("AQ782") = QuelqueChose pour alimenter la cellule, ou pour tester son contenu, ou QuelqueChose = Range ("AQ782") pour récupérer le contenu de la cellule AQ782 et en faire ce que tu veux.

If Range ("AZ782") <>"" Then ...

Essaie avec ça et dis nous si cela convient mieux.


En espérant que cela te dépanne.


Abel
 
A

albert

Guest
Bonsoir Abel, le forum,

Je veux bien utiliser Range(), mais ça ne résoud rien.

Mon PB est de comprendre la formule excel pour l’exploiter.
Or, j’ai supposé qu’après Then, il fallait mettre
Cells(782, 43) = 0

Et il semble que cette supposition soit fausse puisque le résultat est =0

Il faut donc que je comprenne ce « QuelqueChose = Range ("AQ782") »
(je suis nul en formules excel)
 
A

albert

Guest
EUREKA!!

en fait il ne fallait pas utiliser elseif

Sub ColAQ3()
If Range("AZ782") <> 0 Then
Range("AQ782") = Range("AZ782") - Range("AQ782").Offset(Range("P782"), -38)
'deuxième condition
If Range("P782") < Range("R782") Then
Range("AQ782") = Range("AZ782") - Range("AQ782").Offset(Range("P782"), -38)
End If
End If
End Sub
 

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso