Cellule=Cellule*-1
Bonjour,
Pour mes pros je sais que mon problème est aussi simple, mais pour moi je galère enfin je veux rendre les chiffres saisie dans la cellule P6 négative (P6=P6*-1) si A6=transfert ou consommation et la cellule R6=P6*Q6 ( montant Hors Taxe=Prix Unitaire*quantité) si P6<>"" et Q6<>"".
Je vous remercie par avance.
Cordialement
Bonjour Gestionnaire_Rh
Ce n'est pas possible autrement que par code VBA !?
Sinon il suffit de saisir une quantité négative
A+
Bonjour BrunoM45,
merci pour la rapidité, et c'est ok pour le vba et je pense que ça devra ce passer dans
Private Sub Worksheet_Change(ByVal Target As Range)mais je ne sais pas comment l'écrire, et c'est pour ça que je sollicite votre aide.
Re,
gestionnaire_rh a écrit :Bonjour BrunoM45,
merci pour la rapidité, et c'est ok pour le vba et je pense que ça devra ce passer dans
Private Sub Worksheet_Change(ByVal Target As Range)mais je ne sais pas comment l'écrire, et c'est pour ça que je sollicite votre aide.
Tout à fait, je vois que tu connais
Voci le code, si j'ai bien tout compris, à mettre dans la feuille ou tu veux la mdofi
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("P:P")) Is Nothing Then
' Empêcher les évènements, sinon boucle sans fin
Application.EnableEvents = False
On Error Resume Next
Target.Value = -Target.Value
On Error GoTo 0
Application.EnableEvents = True
End If
End SubA+
Bonjour,
Pour la 2ème partie :
dans R6 :
=SI(ET(P6<>"";Q6<>"");P6*Q6;"")Pour la 1ère question, il n'y aura pas d'autres solutions que celles de Bruno, soit une saisie négative manuelle soit un bout de code vba.
Le problème du worksheetchange , c'est que pour qu'il se déclenche, tu dois tester si c'est ta cellule P6 qui est modifiée, et vu que c'est elle que tu modifies, ta macro tourne en boucle... donc il faut bidouiller un peu en désactivant les évènements.
Sinon sans vba, si tu peux te permettre une cellule en + dans ta mise en page
En P6 tu fais ta saisie, et dans une cellule cachée :
=SI(OU(A6="transfert";A6="consommation");-P6;P6)Et dans les calcules où tu utilisais P6, tu utilises cette cellule.
Cordialement,
Edit: Bonjour Bruno
Bonjour BrunoM45, Zirak
Je vous remercies pour vos réponses maintenant la cellule est modifié automatiquement, mais mon problème persiste toujours pour ce code sur worksheet_Change(ByVal Target As Range) que j'aimerai bien pouvoir mettre la condition selon la cellule A6 comme par exemple:
On Error Resume Next
If Target.Offset(0, -15).Value = "consommation" Or "transfert" Then
Target.Value = -Target.Value
End Ifet puis pour la formule
=SI(ET(P6<>"";Q6<>"");P6*Q6;"", j'aimerai la rajouter à la fin du premier code de worksheet_Change de la façon suivante:
Range("R6:R10").FormulaLocal = "=SI(ET(P6<>"""";Q6<>"""");P6*Q6;"""")"mais ça marche toujours pas surtout avec ce message de mémoire insuffisante
enfin ce sont que des suggestions, je n'ai pas la maîtrise du vba et je compte vraiment sur vos propositions.
encore merci pour vos réponses
Cordialement
Bonjour,
J'ai réussi a contourné mon problème et j'ai affecter la modification en nombre négative de la cellule P6 au bouton d'enregistrement en rajoutant ceci:
If Range("A6") = "consommation" Or Range("A6") = "transfert" Then
ActiveCell.Offset(0, 15).Value = ActiveCell.Offset(0, 15).Value * -1Je remercié BrunoM45 et Zirak pour les solutions apportées.
Cordialement
Gestionnaire rh