Public sub qui efface sous condition le contenu d'une cellule

BAT

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à inclure une règle dans une feuille Excel sous forme de macro type public sub.

Le principe est le suivant :
- quand je me positionne dans la colonne F, la macro test le contenu de la colonne D (de la même ligne)
- si le contenu de la colonne D est "RIEN", alors la macro efface le contenu de la cellule D et se repositionne en colonne F
- si le contenu de la colonne D est différent de "RIEN" ou vide, alors la macro ne fait rien.

Est-ce possible d'avoir un ti coup de pouce là dessus ?

Merci par avance pour votre précieuse aide

A +

Bat
 

Pierrot93

XLDnaute Barbatruc
Re : Public sub qui efface sous condition le contenu d'une cellule

Bonjour,

essaye ceci, à placer dans le module de la feuille concernée :
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 6 Or Target.Count > 1 Then Exit Sub
With Target.Offset(, -2)
    If .Value = "RIEN" Then .Value = ""
End With
End Sub

bonne journée
@+
 

Si...

XLDnaute Barbatruc
Re : Public sub qui efface sous condition le contenu d'une cellule

salut

même idée que Pierrot ;) mais en plus court
Code:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
  If R.Column = 6 And R(1, -1) = "RIEN" Then R(1, -1) = ""
End Sub
 

BAT

XLDnaute Occasionnel
Re : Public sub qui efface sous condition le contenu d'une cellule

Hello,
Merci beaucoup pour vos réponses.
ça marche sans marché !
En fait la macro est en conflit avec une autre macro que j'ai sur cette feuillet et qui fait aussi un test sur cette même cellule :
Code:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
  If R(1).Column = 6 Then If IsEmpty(R(1).Offset(, -4).Value) Then R(1).Offset(, -4).Select
End Sub
Est-ce incompatible d'avoir les deux ?
Merci par avance pour votre aide
 

BAT

XLDnaute Occasionnel
Re : Public sub qui efface sous condition le contenu d'une cellule

Non, ça marche !!
J'avais encore une autre macro à cette feuille et en rajoutant le 1er bout de code de Pierrot ça fonctionne :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 4 And Target.Count = 1 Then
Application.EnableEvents = False
Target = StrConv(Target.Text, vbUpperCase)
Application.EnableEvents = True
End If

If Target.Column = 3 Then
    Cells(Target.Row, 1) = ActiveWorkbook.Sheets(2).Cells(4, 2).Value
    Cells(Target.Row, 8) = ActiveWorkbook.Sheets(2).Cells(3, 2).Value
End If
If Target.Column = 6 Then
    Cells(Target.Row, 7) = 1
End If

If Target.Column <> 6 Or Target.Count > 1 Then Exit Sub
With Target.Offset(, -2)
    If .Value = "RIEN" Then .Value = ""
End With

End Sub
Merci beaucoup pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 424
Messages
2 088 277
Membres
103 805
dernier inscrit
Nyco