Code VBA pour valeur negative

bonjour le forum

j ai un fichier excel qui contient des macros

ma demande :

Svp je veux un code vba pour la feuille nome "MOUVEMENT"

Le code sert a mettre la cellule "E7:E30" dans mon tableau en forme numerique negative exmpl ( -5) si la cellule D7:D30 contienne la valeur "SORTIE" et si j ai la valeur "ENTREE" alors "C7:C30" garde la forme positive exmpl (5)

J ai mis une piece joint pour expliquer

Et merci

Bonjour,

Peut être ce code ?

Sub testt()
For i = 7 To 30
    If Cells(i, "D") = "SORTIE" Then
        Cells(i, "E") = Cells(i, "E") * -1
    End If
Next
End Sub

Bonjour Mus54

J ai copie le code mais rien ne se passe. toujours la saisie en forme positive dans la cellule "E7" même si j al a valeur " SORTIE" dans la cellule "D7"

Bonjour

Mettez ce code dans votre feuille Mouvement

Dim Flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Flag Then Exit Sub
If Not Intersect(Target, ListObjects("T_MOUVEMENT_Mouvement").ListColumns(5).DataBodyRange) Is Nothing Or _
Not Intersect(Target, ListObjects("T_MOUVEMENT_Mouvement").ListColumns(4).DataBodyRange) Is Nothing Then
    Flag = True
    With Target
        If .Column = 5 Then
            Select Case UCase(.Offset(0, -1))
                Case Is = "SORTIE": .Value = .Value * -1
                Case Is = "ENTREE": .Value = Abs(.Value)
            End Select
        Else:
            Select Case UCase(.Value)
                Case Is = "SORTIE": .Offset(0, 1).Value = .Offset(0, 1).Value * -1
                Case Is = "ENTREE": .Offset(0, 1).Value = Abs(.Offset(0, 1).Value)
            End Select
        End If
    End With
End If
Flag = False
End Sub

Attention à ce que la variable Flag soit bien placée en première ligne (donc tout au dessus)

Le code réagit en fonction des colonnes D et E, de sorte que si vous entrez un chiffre en E puis que, vous avez fait une erreur et que vous devez changer ENTREE par SORTIE (ou l'inverse), le code modifiera aussi la colonne E.

Si ok, merci de cloturer le fil en cliquant sur le petit v en haut à droite

Cordialement

BONJOUR Dan

non çà marche pas

j ai un blocage de code "Private Sub Worksheet_Change(ByVal Target As Range)"

Re

j ai un blocage de code "Private Sub Worksheet_Change(ByVal Target As Range)"

J'ai testé avant de vous envoyer

Cela bloque quand vous faites quoi ?

Il y a aussi un code Selectionchange désactivé. Vous l'utilisez ou pas ?

RE Dan

Normalement je commence avec le choix du référence dans la cellule "B7" et après j ai une liste dans la cellule "D7" donc je choisi soit ENTREE OU SORTIE , SI je choisi SORTIE je passe a la cellule E7 pour saisir par exmpl 10 qui doit se transformer en -10 lors du clic sur entrer ou tabulation . Mais quand je choisi SORTIE j ai automatiquement 0 sur la cellule E7 sans pouvoir saisir aucun chiffre

Re

Normalement je commence avec le choix du référence dans la cellule "B7" et après j ai une liste dans la cellule "D7" donc je choisi soit ENTREE OU SORTIE , SI je choisi SORTIE je passe a la cellule E7 pour saisir par exmpl 10 qui doit se transformer en -10 lors du clic sur entrer ou tabulation . Mais quand je choisi SORTIE j ai automatiquement 0 sur la cellule E7 sans pouvoir saisir aucun chiffre

Pas de soucis de mon coté

Votre fichier en retour dans lequel j'ai modifié la ligne .value * -1 mais ce n'est pas cette modification qui vous pose le souci

Crdlt

Bonjour Bennisay, Dan,

En retour ton fichier avec la macro ci-dessous en feuille Mouvement ainsi que des ajouts de MFC sur cette feuille là.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Row > 6 Then
Avant = Target.Address
Application.EnableEvents = False
Range(Avant) = Range(Avant) * IIf((Range(Avant).Offset(, -1) = "SORTIE"), -1, 1)
Application.EnableEvents = True
End If
End Sub

Bons tests, bonne continuation.

RE

Merci Dan

Le code marche parfaitement et le problème résolu. merci une autre fois

Juste une question

Mon fichier excel xls contient des macros mais quand je l ouvre dans excel xlsx 2007 il se ferme , j arrive pas a travailler sur cette version . vous avez une idée comment résoudre ce problème?

Re,

Mon fichier excel xls contient des macros mais quand je l ouvre dans excel xlsx 2007 il se ferme , j arrive pas a travailler sur cette version . vous avez une idée comment résoudre ce problème?

Si vous l'ouvrez dans excel 2007 en xls cela doit fonctionner. Par contre si votre fichier est en xlsx, vous n'avez plus les codes.

Vous avez deux choix, soit laisser en xls ou l'utiliser en XlSM (M pour macro)

Lorsque vous dites XLS puis XLSX, je suppose que vous avec bien utilisé la sauvegarde Enregistrer sous pour le convertir en XlSX.

Cette question parce que certaines personnes croient qu'il suffit d'ajouter un X derrière le XLS, ce qui est totalement faux et peu provoquer des soucis tels que ceux dont vous parlez

Cordialement

Rechercher des sujets similaires à "code vba valeur negative"