modifier la valeur d'une cellule en fonction de deux autres cellules

khephrens

XLDnaute Occasionnel
bonjour à tous

j'aimerais en VBA modifier la valeur d'une cellule en fonction de celle de deux autres cellules.

exemple :
je souhaite que les cellules par exemple de la plage G4:G18 prennent la valeur numerique "1" et la couleur rouge en fonction de la valeur correspondante des cellules sur la meme lignes de la plage B4:C18

je sais le reproduire avec une formule mais j'aimerais la version VBA pour progresser
Merci de votre aide . je débute dans VBA et je ne saisi pas tout

ci joint fichier exemple
bonne journée
 

Pièces jointes

  • exemple.xlsx
    10.4 KB · Affichages: 59
  • exemple.xlsx
    10.4 KB · Affichages: 60
  • exemple.xlsx
    10.4 KB · Affichages: 58

Lolote83

XLDnaute Barbatruc
Re : modifier la valeur d'une cellule en fonction de deux autres cellules

Salut khephrens,
Voici un exemple avec VBA.
En espérant que cela puisse t'aider à commencer avec VBA
@+ Lolote83
 

Pièces jointes

  • Copie de Exemple - Khephrens.xlsm
    20.1 KB · Affichages: 82

khephrens

XLDnaute Occasionnel
Re : modifier la valeur d'une cellule en fonction de deux autres cellules

Bjr lolotte83
merci bcp ca correspond à ce que je souhaite
j'aimerais remplacer le bouton de declenchement de la macro et rendre automatique ce declenchement des que les cellules sont renseignées.
est-ce possible?
:eek:
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : modifier la valeur d'une cellule en fonction de deux autres cellules

Bonjour Khephrens, Lolote, bonjour le forum,

Peut-être comme ça avec la macro événementielle Change :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)

Set PL = Sheets("Feuil1").Range("B4:C18") 'définit la plage PL
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub 'si le changement a lieu en dehors de la plage PL, sort de la procédure
Select Case Target.Column 'agit en fonction de la colonne de la cellule modifiée
    Case 2 'cas de la colone 2 (=B)
        If Target.Value = "" Then Target.Offset(0, 5).Value = "": Exit Sub 'si la cellule est effacée, efface la cellule en colonne G, sort de la procédure
        If Target.Offset(0, 1).Value <> "" Then Target.Offset(0, 5).Value = 1 'si la cellule en colonne C n'est pas vide, écrit "1" dans la colonne G
    Case 3 'cas de la colonne 3 (=C)
        If Target.Value = "" Then Target.Offset(0, 4).Value = "": Exit Sub 'si la cellule est effacée, efface la cellule en colonne G, sort de la procédure
        If Target.Offset(0, -1).Value <> "" Then Target.Offset(0, 4).Value = 1 'si la cellule en colonne B n'est pas vide, écrit "1" dans la colonne G
End Select 'fin de l'action en fonction de...
End Sub

J'ai mis la couleur de l'encre rouge par défaut dans la plage G2:G18...
 

khephrens

XLDnaute Occasionnel
Re : modifier la valeur d'une cellule en fonction de deux autres cellules

merci Robert
la macro fonctionne bien
juste un pettit souci
Quand je selectionne les deux cellules d'un seul coup dans la colonne et que je veux le ssupprimer la macro bug !!

y a t il un moyen de coder aussi la suppression des deux cellules en meme temps pour remettrre la colonne G à vide.?

merci bcp
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : modifier la valeur d'une cellule en fonction de deux autres cellules

Bonjour Khephrens, Lolote, bonjour le forum,

Essaie comme ça :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)
Dim LI As Range 'déclare la variable LI (LIgne)

Set PL = Sheets("Feuil1").Range("B4:C18") 'définit la plage PL
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub 'si le changement a lieu en dehors de la plage PL, sort de la procédure
If Target.Cells.Count > 1 Then 'si le nombre de cellules modifiées est supérieur à 1
    For Each LI In PL.Rows 'boucle sur toutes le ligne LI de la plage PL
        If Application.WorksheetFunction.Sum(LI) = 0 Then Cells(LI.Row, 7).Value = "" 'si la somme des deux cellules de la ligne est nulle, efface la cellule en colonne G
    Next LI 'prochaine cellule de la boucle
    Exit Sub 'sort de la procédure
End If 'fin de la condition
Select Case Target.Column 'agit en fonction de la colonne de la cellule modifiée
    Case 2 'cas de la colone 2 (=B)
        If Target.Value = "" Then Target.Offset(0, 5).Value = "": Exit Sub 'si la cellule est effacée, efface la cellule en colonne G, sort de la procédure
        If Target.Offset(0, 1).Value <> "" Then Target.Offset(0, 5).Value = 1 'si la cellule en colonne C n'est pas vide, écrit "1" dans la colonne G
    Case 3 'cas de la colonne 3 (=C)
        If Target.Value = "" Then Target.Offset(0, 4).Value = "": Exit Sub 'si la cellule est effacée, efface la cellule en colonne G, sort de la procédure
        If Target.Offset(0, -1).Value <> "" Then Target.Offset(0, 4).Value = 1 'si la cellule en colonne B n'est pas vide, écrit "1" dans la colonne G
End Select 'fin de l'action en fonction de...
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu