Modification Code VBA

UJAP

XLDnaute Occasionnel
Bonjour,

Pouvez-vous m'aider à modifier mon code VBA ci-dessous généré lors de l'enregistrement d'une macro commande.

Son objectif est de multiplier le chiffre contenu dans la Colonne B par 1 jusqu'à la fin du tableau dans la colonne C. Le problème est que la longueur du tableau peut varier en fonction des extractions.

Peut-on demander à Excel de faire jusqu'à ce qu'il y a des renseignements dans la colonne B.

Merci pour vos réponses;

Code:
Sub E_3()
'
' E_3 Macro
' Rub*1
'

'
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C3").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*1"
    Range("C3").Select
    Selection.AutoFill Destination:=Range("C3:C3066")
    Range("C3:C3066").Select
    Columns("C:C").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("B:B").Select
    Selection.Delete Shift:=xlToLeft
    Range("B2").Select
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Modification Code VBA

Re,

essaye ceci, fonctionne dans le fichier que tu as joint, enfin selon ma compréhension....
Code:
Option Explicit
Sub test()
Dim i As Long
For i = 3 To Cells(Rows.Count, 4).End(xlUp).Row
    Cells(i, 6) = IIf(Cells(i, 4) > 0, Abs(Cells(i, 6)), Cells(i, 6) * -1)
Next i
End Sub
 

UJAP

XLDnaute Occasionnel
Re : Modification Code VBA

Merci le code fonctionne,

Peux-tu l'expliquer si j'ai besoin de l'adapter ailleurs ? et comment le modifier si je veux que les modificat° se fassent sur la colonne H ?

Merci en tout cas,
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Modification Code VBA

Re,

c'est une boucle sur la colonne F (6), avec évaluation de la colonne D(4) par la fonction IIF, si vrai envoie la valeur absolue en F, si faux multiplie la valeur par -1 pour avoir un résultat positif....

pour plus d'info sur les différents codes, tu places ton curseur sur le mot pour lequel tu veux des détails et touche de fonction F1, tu obtiens alors l'aide vba...

bon après midi
@+
 

UJAP

XLDnaute Occasionnel
Re : Modification Code VBA

Merci,

Je voudrai faire la même chose sur la colonne H (8) par rapport à la colonne D (4) en modifiant le code comme ceci ! mais cela ne fonctionne pas !

Peux-tu me dire où est mon erreur !

Code:
   Sub E_5()
'
' E_3 Macro
' Base + et - sur le total
'

'
 Dim i As Long
 For i = 3 To Cells(Rows.Count, 4).End(xlUp).Row
     Cells(i, 8) = IIf(Cells(i, 4) > 0, Abs(Cells(i, 8)), Cells(i, 8) * -1)
 Next i
 End Sub
 

Pièces jointes

  • Test1.xls
    27.5 KB · Affichages: 32
  • Test1.xls
    27.5 KB · Affichages: 41
  • Test1.xls
    27.5 KB · Affichages: 36

UJAP

XLDnaute Occasionnel
Re : Modification Code VBA

Ok merci pour tout,

Comment peut modifier le code en lui disant simplement de multiplier *-1 si le montant de la colonne 8 est supérieur à 0 ?
Code:
 Sub E_5()
 '
 ' E_3 Macro
 ' Base + et - sur le total
 '

 '
  Dim i As Long
  For i = 3 To Cells(Rows.Count, 4).End(xlUp).Row
      Cells(i, 8) = IIf(Cells(i, 4) > 0, Abs(Cells(i, 8)), Cells(i, 8) * -1)
  Next i
  End Sub
 

UJAP

XLDnaute Occasionnel
Re : Modification Code VBA

Re,

Selon moi le code fonction correctement sauf si le chiffre est déjà négatif il multiplie par -1 est donc le chiffre devient positif.

Il faudrait qu'il ne multiplie par -1 si le chiffre en colonne D est négatif et le chiffre est positif en H ?

Y a t-il moyen d'adapter le code de cette manière ?

Merci,
 

Pierrot93

XLDnaute Barbatruc
Re : Modification Code VBA

Re,

peut être comme ceci alors... enfin si j'ai bien compris :
Code:
Sub E_5()
 '
 ' E_3 Macro
 ' Base + et - sur le total
 '

 '
  Dim i As Long
  For i = 3 To Cells(Rows.Count, 4).End(xlUp).Row
      Cells(i, 8) = IIf(Cells(i, 4) <  0 and Cells(i, 8) > 0, Abs(Cells(i, 8)), Cells(i, 8) * -1)
  Next i
  End Sub
 

UJAP

XLDnaute Occasionnel
Re : Modification Code VBA

Re,
J’ai pas été clair dans mes explications,
Macro 1 :
Etape 1 – Repérer dans la colonne D (4) les montants < à 0,
Etape 2 - Repérer dans la colonne H (8) les montants > à 0 pour les multiplier *-1
Macro 2 :
Etape 1 – Repérer dans la colonne D (4) les montants >à 0,
Etape 2 - Repérer dans la colonne H (8) les montants < à 0 pour les multiplier *-1
Je ne sais pas si c’est plus claire, et si tu as qques. minutes pr créer les 2 macros ?
Merci en tt cas,
 

Discussions similaires

Réponses
3
Affichages
264

Statistiques des forums

Discussions
312 558
Messages
2 089 595
Membres
104 219
dernier inscrit
agateponcet