Comment imbriquer toutes ces conditions en VBA ??

  • Initiateur de la discussion Initiateur de la discussion albert
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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)
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
17
Affichages
2 K
  • Question Question
XL 2013 Aide VBA
Réponses
4
Affichages
1 K
A
Réponses
3
Affichages
1 K
A
Retour