Transformer en négatif toutes les valeurs d'une colonne

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 !

David590

XLDnaute Occasionnel
Bonjour à tous,

Et bien... tout est dans le titre 😀

J'ai besoin de transformer en négatif toutes les valeurs d'une colonne

Je connais cette solution : Range("B2") = -Range("B2")

qui consiste à le faire pour une cellule, mais comment faire pour l'appliquer à la colonne complète ?
 
Re : Transformer en négatif toutes les valeurs d'une colonne

Bonjour, David590, le Forum,

Comme ceci ?

Code:
Option Explicit
Sub Négatif()
Dim c As Range
    For Each c In Range(Range("b2"), Range("b2").End(xlDown))
        If IsNumeric(c) And c > 0 Then c.Value = c.Value * -1
    Next
End Sub

A bientôt 🙂

P. S. : Bonjour, CHALET53
 
Re : Transformer en négatif toutes les valeurs d'une colonne

Bonjour à tous

une autre approche qui évite la boucle :
Code:
With Range("K1")
    .Value = "-1"
    .Copy
    Range("A1", Range("A65536").End(xlUp)).PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
    .ClearContents
bonne soirée
@+

Edition : bonjour Kjin.. Aarf pas raffraichi moi...
 
Re : Transformer en négatif toutes les valeurs d'une colonne

Bonjour à tous,

Sans boucle et uniquement pour le fun :

Code:
Sub SigneMoins()
With Range("A1", [A65536].End(xlUp))
  ThisWorkbook.Names.Add "Table", .Value
  .Formula = "=IF(ISNUMBER(INDEX(Table,ROW())),-ABS(INDEX(Table,ROW())),IF(ISNA(INDEX(Table,ROW())),"""",INDEX(Table,ROW())))"
  .Value = .Value
End With
ThisWorkbook.Names("Table").Delete
End Sub
A+
 
Re : Transformer en négatif toutes les valeurs d'une colonne

Re,

Avec une formule matricielle 😛 c'est plus rapide et encore plus fun :

Code:
Sub SigneMoins()
With Range("A1", [A65536].End(xlUp))
  ThisWorkbook.Names.Add "Table", .Value
  .FormulaArray = "=IF(ISNUMBER(Table),-ABS(Table),IF(ISNA(Table),"""",Table))"
  .Value = .Value
End With
ThisWorkbook.Names("Table").Delete
End Sub
A+
 
Re : Transformer en négatif toutes les valeurs d'une colonne

Re,

Avec une formule matricielle 😛 c'est plus rapide et encore plus fun :

Code:
Sub SigneMoins()
With Range("A1", [A65536].End(xlUp))
  ThisWorkbook.Names.Add "Table", .Value
  .FormulaArray = "=IF(ISNUMBER(Table),-ABS(Table),IF(ISNA(Table),"""",Table))"
  .Value = .Value
End With
ThisWorkbook.Names("Table").Delete
End Sub
A+

Bonjour tout le monde,

Apparemment c'est ce code qui me conviendrait le mieux car rapide et surtout c'est le seul qui ne m'affiche pas de 0 si les cellules sont vide, le seul problème est qu'il ne fonctionne pas si le format de la colonne est en monétaire
J'ai d'ailleurs mis du temps pour savoir d'ou venait le problème puisqu'il fonctionnait sur mon classeur test mais pas sur mon classeur final)

Donc je vais faire un changement de format au début et à la fin du code, à moins que l'on puisse modifier quelque chose directement ?
 
Re : Transformer en négatif toutes les valeurs d'une colonne

Bonjour David590,

Utilisez .Value2 au lieu de .Value :

Code:
Sub SigneMoins()
With Range("A1", [A65536].End(xlUp))
  ThisWorkbook.Names.Add "Table", .Value2
  .FormulaArray = "=IF(ISNUMBER(Table),-ABS(Table),IF(ISNA(Table),"""",Table))"
  .Value = .Value
End With
ThisWorkbook.Names("Table").Delete
End Sub
A+
 
- 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

Discussions similaires

Réponses
10
Affichages
126
Réponses
2
Affichages
112
Retour