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

  • Initiateur de la discussion Initiateur de la discussion khephrens
  • Date de début Date de début

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 !

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

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?
😱
 
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...
 
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
 
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
 
- 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
12
Affichages
173
Retour