Colonne P avec des nombres négatifs

Bonjour à Tous

Dans Worksheet_Change de la feuil1, j’ai écrit le code suivant qui théoriquement devrait convertir le nombre (positif) introduit dans la colonne P en nombre négatif, sauf que, il ne fonctionne pas, d’où ma demande d'aide.

Merci d’avance de votre soutien.

Salutations

Dim Cel As Range

Set Cel = Range("P2:P403")

For Each Cel In Selection

If IsNumeric(Cel.Value) Then

Cel.Value = (Cel.Value) * -1

End If

Next Cel

Bonsoir,

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cel As Range
    If Not Intersect(Target, Range("P2:P403")) Is Nothing Then
        For Each Cel In Intersect(Target, Range("P2:P403"))
            If Cel.Value <> "" Then
                If IsNumeric(Cel.Value) Then Cel.Value = Cel.Value * -1
            End If
        Next Cel
    End If
End Sub

Cordialement.


Un remord de conscience !!

J'ai postulé que tu tapais systématiquement des nombres positifs... J'ai tout de même tenu compte de l'effacement (>cellule vide, donc renvoyant 0, que la macro aurait transformé en 0 sinon), mais pas de la saisie d'un nombre négatif (qui devrait le rester...).

Le cas échéant un test supplémentaire serait à introduire...

Cordialement.

Bonjour,

Une seconde proposition à tester.

Pourrais-tu nous préciser comment sont saisies les données dans la colonne P ?

Cdlt.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rCell As Range

    If Not Intersect(Target, Range("P2:P403")) Is Nothing Then
        Application.EnableEvents = False
        For Each rCell In Target
            If IsNumeric(rCell.Value) And rCell.Value > 0 Then rCell.Value = -rCell.Value
        Next rCell
        Application.EnableEvents = True
    End If

End Sub

Bonjour MFerrand, Jean-Eric et le Forum,

Merci à tous les deux pour vous propositions.

Je m’adresse pour commencer à MFerrand pour lui dire que le code convertit effectivement le chiffre encodés en nombres négatifs et aussitôt il le remet en en positif. Je me suis permis d’ajouter un test (Comme vous l’avez écrit dans cotre message) pour lui permettre de répondre à mes attentes :

J’ai remplacé donc : If Cel.Value <> "" Then

Par : If Cel.Value <> "" and Cel.Value > 0 ThenThen

Je m’adresse maintenant à Jean-Eric :

Votre code répond totalement à mes attentes.

Pour répondre à votre question concernant l’encodage des données, elles sont encodées comme suit :

Exemple pour la ligne 2, Je commence par encoder en B2, suivi par C2 etc. et je fini toujours mon encodage en P2.

Toutefois, la colonne P ne contient pas systématiquement des données, dans ce cas, elle reste vide.

Merci encore à tous les deux.

Salutations.

Bonsoir,

Un oubli de ma part... L'anomalie est que cela n'est pas apparu chez moi comme cela aurait dû !

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cel As Range
    If Not Intersect(Target, Range("P2:P403")) Is Nothing Then
        Application.EnableEvents = False
        For Each Cel In Intersect(Target, Range("P2:P403"))
            If Cel.Value <> "" Then
                If IsNumeric(Cel.Value) Then Cel.Value = Cel.Value * -1
            End If
        Next Cel
        Application.EnableEvents = True
    End If
End Sub

Cordialement.

Bonjour MFerrand et le Forum,

J’ai testé le code, ce dernier me donne une totale satisfaction.

Merci beaucoup.

Cordiale poignée de main.

Rechercher des sujets similaires à "colonne nombres negatifs"