VBA - Multiplier cellules d'une colonne par valeur fixe

Bonjour,

Travaillant quotidiennement sur Excel dans le cadre de mon travail, j'ai décidé de me lancer dans l'écriture de macro via VBE.

J'ai lu plusieurs "cours" sur certains sites et essayer de résoudre mon problème mais je bloque là.

Chaque jour je fais des extractions via un ERP, cependant les quantités de sorties des articles sont toujours négatives (sauf lors de retour où là les chiffres sont positifs, c est inversé) et je dois les remettre en positif "à la main" sur Excel.

Pour le moment je fais une formule dans une autre colonne en multipliant les cellules par (-1) et ensuite je fais copier / coller en valeur sur la colonne de base et j'obtiens ma colonne en positif (ou négatif pour les retours).

J'ai essayer sur VBE en utilisant le code suivant

Sub positif1()

Range("c2").Select

ActiveCell.Value = ActiveCell.Value * -1

Range("c3").Select

ActiveCell.Value = ActiveCell.Value * -1

Range("c4").Select

ActiveCell.Value = ActiveCell.Value * -1

Range("c5").Select

ActiveCell.Value = ActiveCell.Value * -1

Range("c6").Select

ActiveCell.Value = ActiveCell.Value * -1

End Sub

--> C'est très fastidieux, surtout que mes extrations font souvent + de 50 000 lignes ... et qu'en plus le nombre de lignes est variable

J'ai donc essayer sous une autre forme :

Sub positif2()

Range("c2:c13").Select

Range("c2:c13") = ActiveCell.Value * -1

End Sub

--> Mais cette fois si toutes les cellules sont bien en signe inversé mais prennent la valeur de la cellule active à cause de "ActiveCell" :/

Ce dont j'ai besoin c'est que chaque cellule d'une colonne, sauf le titre, multiplie sa valeur initiale par -1, et que le calcul se fasse en fonction du nombre de cellules.

Je joins un fichier test avec 7 lignes et j'ai besoin que les colonnes C et E appliquent la formule citée au dessus (je les ai surlignées en rouge pour faciliter la lecture)

Merci par avance,

Ludovic

425classeur1.xlsm (16.15 Ko)

Bonjour

Remplace la macro POSITIF par celle ci-dessous

Sub positif()
'MAcro Dan
Dim plage As Range, cel As Range
Set plage = Range("C2:C" & Range("C" & Rows.Count).End(xlUp).Row)
For Each cel In plage
    cel = cel * -1
    cel.Offset(0, 2) = cel.Offset(0, 2) * -1
Next
End Sub

Si ok, clique sur le v Vert à coté du bouton EDITER pour cloturer le fil lors de ta réponse.

Amicalement

Ça marche parfaitement bien, un grand merci à toi !

Rechercher des sujets similaires à "vba multiplier colonne valeur fixe"