Suppression cellule en fonction d'une autre avec macro

Fermé
GoodPerson - 19 oct. 2019 à 22:19
 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
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
19 oct. 2019 à 23:01
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
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
20 oct. 2019 à 20:59
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
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
La macro fonctionne à merveille !
Merci et bonne journée !
0
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