Suppression cellule en fonction d'une autre avec macro [Fermé]

Signaler
-
 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

Messages postés
8269
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 novembre 2020
1 532
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 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 !
Messages postés
8269
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 novembre 2020
1 532
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 !
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,