Macro sous 2 conditions

fabio

XLDnaute Nouveau
BONJOUR

Comment adapter le code ci dessous :
explication
J'aimerais que lorsque figure "AM" en colonne E et "OUI" en colonne I, la valeur de la colonne J se reporte dans la colonne K et dans la colonne L (Valeur de la colonne K*1%)

quand les 2 conditions sont réunies la macro s'active automatiquement


For i = 2 To 10

If Cells(i, 5) <> "AM" And Cells(1, 9) <> "oui" Then
Cells(i, 11).Value = Cells(1, 10)
Cells(i, 12).Value = Cells(1, 10)
End If
Next

End Sub

merci pour votre aide
fabio
 

Pièces jointes

  • Classeur2.xls
    26.5 KB · Affichages: 30
  • Classeur2.xls
    26.5 KB · Affichages: 35
  • Classeur2.xls
    26.5 KB · Affichages: 36

vgendron

XLDnaute Barbatruc
Re : Macro sous 2 conditions

Bonjour,

pourquoi as tu besoin d'une macro? alors qu'une simple formule te donne le résultat
en K2 =SI(ET(E2="AM";I2="OUI");J2;"valeur")
et en L2 =SI(K2="valeur";"valeur";K2*0.01)
puis tu tires les formules vers le bas
j'ai mis "valeur" pour reproduire ton tableau..
mais j'imagine que ca va pas etre ca..
d'ou la question
si la condition (AM en colonne E) ET(OUI en colonne I) n'est pas remplie.. tu mets quoi en colonne K et L?
 

fabio

XLDnaute Nouveau
Re : Macro sous 2 conditions

Je n'utilise pas de formule car c'est une projection qui sera faite par plusieurs personnes qui décideront si ils font ou pas cette projection
et il ne faut surtout pas de formule dans les cellules

merci

fabio
 

vgendron

XLDnaute Barbatruc
Re : Macro sous 2 conditions

Bonjour

ok,
donc il te suffit de mettre ce code directement dans la feuille concernée (pas dans un module)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 2 To 10
     If ((Cells(i, 5) = "AM") And (Cells(i, 9) = "OUI")) Then
        Cells(i, 11).Value = Cells(i, 10)
        Cells(i, 12).Value = Cells(i, 10)
    End If
 Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Macro sous 2 conditions

Bonjour à tous, bonjour fabio, bonjour vgendron


La même que vgendron (avec une ligne de moins)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 2 To 10
If ((Cells(i, 5) = "AM") And (Cells(i, 9) = "OUI")) Then
Cells(i, 11).Resize(, 2).Value = Cells(i, 10)
End If
Next
End Sub
et ou une variante d'écriture
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 2 To 10
If ((Cells(i, 5) = "AM") And (Cells(i, 9) = "OUI")) Then
Range(Cells(i, 11), Cells(i, 12)).Value = Cells(i, 10)
End If
Next
End Sub
 

vgendron

XLDnaute Barbatruc
Re : Macro sous 2 conditions

Hello Staple

et oups. je viens de me rendre compte que j'ai repris le code d'origine tel quel
Code:
For i = 2 To 10

If Cells(i, 5) <> "AM" And Cells(1, 9) <> "oui" Then
Cells(i, 11).Value = Cells(1, 10)
Cells(i, 12).Value = Cells(1, 10)
End If
Next

End Sub
et que
1) j'ai changé les 1 des Cells (1,9) Cells(1,10) et Cells(1,11) par un i
2) j'ai changé les <> de ta condition par des =
3) par contre, j'ai oublié de modifier le code pour que la cellule L soit égale à 1% de la cellule K (du coup. staple. le resize. ne marche plus ;-) )
ce qui donne ca au final
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 2 To 10
     If ((Cells(i, 5) = "AM") And (Cells(i, 9) = "OUI")) Then
        Cells(i, 11) = Cells(i, 10)
        Cells(i, 12) = Cells(i, 10) / 100
    End If
 Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 420
Membres
103 205
dernier inscrit
zch