Valeur négative d'une cellule égal zéro

Bonjour à tous,

Pourriez vous me dire comment mettre un zéro dans une cellule à partir du moment ou sa valeur est négative? (-1; -2...), tout en sachant que les valeurs insérée dans la cellule proviennent d'un copié-collé et non pas d'une saisie directe.

Merci par avance.

Bonjour,

Clic droit > Format de cellule > onglet Nombre > Personnalisé > Type : 0;"0"

Bonjour OYOBRANS,

Merci pour ta réponse, mais cela ne me convient pas car toutes les cellules se mettent à zéro peu importe leurs valeurs.

Par contre:

Clic droit > Format de cellule > onglet Nombre > Personnalisé > Type: Standart;"0";;

semble mieux fonctionner dans mon cas, je vais vérifier encore


Bonjour à tous,

problème dans ma solution, comme les cellule sont remplies par un copier collé et non pas par une saisie, le format des cellules est à chaque fois perdu.

En collant les valeurs uniquement ?

Bonsoir,

Et ça ?

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Application.EnableEvents = False
    For Each c In Target
        If c.Value < 0 Then c.Value = 0
    Next c
    Application.CutCopyMode = False
    Application.EnableEvents = True
End Sub

Cordialement

Ferrand

Merci MFerrand,

Mais pourrais tu m'expliquer comment l'adapter à mon fichier en sachant que cette formule doit s'adapter à la colonne "D" de la Feuille "POINTAGES" de mon fichier?

Ou bien, pour que cela n'agisse que lors d'un collage :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    If Application.CutCopyMode Then
        Application.EnableEvents = False
        For Each c In Target
            If c.Value < 0 Then c.Value = 0
        Next c
        Application.CutCopyMode = False
        Application.EnableEvents = True
    End If
End Sub

Cette procédure est à coller dans le module de la feuille concernée.

Ah ! Si cela ne doit s'appliquer qu'en colonne D, je t'en refais une autre version.

Celle-ci s'applique à la colonne D, pour tout changement.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, isect As Range
    Set isect = Application.Intersect(Target, Me.Columns("D"))
    If isect Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each c In isect
        If c.Value < 0 Then c.Value = 0
    Next c
    Application.CutCopyMode = False
    Application.EnableEvents = True
End Sub

Si tu veux qu'elle ne s'applique que lors de collage, je rétablirai la condition.

Cordialement

Aie, cela ne semble pas fonctionner aucune réaction:

Dans le VBA, j'ai cliquer sur la Feuille "POINTAGES", insertion, Module, j'ai collé ton code, enregistrer et aucuns effets


Pardon,

J'ai réessayé et maintenant cela semble fonctionner. Mais effectivement cela devrai ne s'appliquer qu'au collage

Super, un grand merci à toi

Sur l'onglet de la feuille concernée, clic droit puis Visualiser le code. Cela t'amènera sur le bon module.

Je refais version avec condition Collage.


Voilà :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, isect As Range
    If Application.CutCopyMode Then
        Set isect = Application.Intersect(Target, Me.Columns("D"))
        If isect Is Nothing Then Exit Sub
        Application.EnableEvents = False
        For Each c In isect
            If c.Value < 0 Then c.Value = 0
        Next c
        Application.CutCopyMode = False
        Application.EnableEvents = True
    End If
End Sub

Cordialement

Ferrand

Un grand merci à toi, tout fonctionne parfaitement.

Merci encore

Rechercher des sujets similaires à "valeur negative egal zero"