Suppression cellule en fonction d'une autre avec macro

GoodPerson -  
 GoodPerson -
Bonjour,

Mon problème peut être simple à résoudre mais je n'arrive pas.
Je souhaite en effet faire ceci (avec Macro/VBA je pense):

- si je modifie ou supprime la valeur d'une cellule (E2 par exemple), le contenu de "F2" uniquement soit supprimé;
- si je modifie ou supprime la valeur d'une cellule (E3 par exemple), le contenu de "F3" uniquement soit supprimé;
- et ainsi de suite;

En gros, je souhaite que chaque cellule soit supprimé uniquement en fonction d'une autre autre.

J'utilise ceci pour le premier exemple, mais je n'arrive pas à combiner les autres qu'ils soient indépendante de la première condition et ainsi de suite :
"Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E2")) Is Nothing Then
Range("F2").ClearContents
End If
End Sub"


Merci pour votre aide

2 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Essaies :
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Columns("E")) Is Nothing Then
    Target.Offset(0, 1).ClearContents
  End If
End Sub

1
GoodPerson
 
Haha, je suis encore bloqué !

Je souhaite faire la même chose (et ce dans la même macro) avec les cellules /colonnes "C" et "E"; c'est à dire quand on modifie C, E est supprimé automatiquement.
Que devient ce code?
Je crois que les références pour C et E doivent être :
Columns("C") et Target.Offset(0, 2)
Mais je n'arrive pas à les combiner avec le code précédent.

Merci !
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Finalement, ça montre que le code que je t'avais donné n'était pas au top : il génère l'évènement Change ce qui pourrait poser des problèmes !
Dans une procédure évènementielle, il faut systématiquement penser aux conséquences des évènements provoqués par cette dernière.
Le plus sûr est de désactiver les évènements avant l'instruction qui le provoque (dans ce cas ClearContents) et de les rétablir aussitôt après.

Essaies :
- Si quand tu modifie C ça ne doit effacer que E
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Columns("C")) Is Nothing Then
    Application.EnableEvents = False
    Target.Offset(0, 2).ClearContents
    Application.EnableEvents = True
  End If
  If Not Intersect(Target, Columns("E")) Is Nothing Then
    Application.EnableEvents = False
    Target.Offset(0, 1).ClearContents
    Application.EnableEvents = True
  End If
End Sub

- Ou si que tu modifie C ça doit effacer E et F :
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Columns("C")) Is Nothing Then
    Application.EnableEvents = False
    Target.Offset(0, 2).ClearContents
    Target.Offset(0, 3).ClearContents
    Application.EnableEvents = True
  End If
  If Not Intersect(Target, Columns("E")) Is Nothing Then
    Application.EnableEvents = False
    Target.Offset(0, 1).ClearContents
    Application.EnableEvents = True
  End If
End Sub
0
GoodPerson
 
Je te remercie encore une fois !

La situation 2 est la mieux pour mon cas: si C est modifié, E et F sont supprimés automatiquement.

Je te donnerai une suite demain.

Cordialement,
0
GoodPerson
 
La macro fonctionne à merveille !
Merci et bonne journée !
0
GoodPerson
 
Merci infiniment Patrice33740 ; ça marche à merveille ????????

Je viens de m'en rendre compte que je suis nul part dans la logique de programmation en Excel ????????.

Cordialement,
0