Suppression cellule en fonction d'une autre avec macro

- - Dernière réponse :  GoodPerson - 21 oct. 2019 à 15:25
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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
7846
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
11 novembre 2019
1236
1
Merci
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 71530 internautes nous ont dit merci ce mois-ci

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 !
Patrice33740
Messages postés
7846
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
11 novembre 2019
1236 -
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
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,
La macro fonctionne à merveille !
Merci et bonne journée !
Commenter la réponse de Patrice33740
0
Merci
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,
Commenter la réponse de GoodPerson