XL 2016 macro effacer en plusieurs en fonction d'un autre cellule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

damrigx

XLDnaute Nouveau
Bonjour tout le monde, étant novice en macro je galère pour une chose qui risque de vous sembler pas grand chose mais pour moi j'ai beau essayer je n'arrive à rien. J'aurais voulu savoir comment on pouvait faire pour effacer toutes les cellules de la colonne b2:b15 et d'y interdire toute autre écriture à partir du moment où le terme "Arrêt" apparait dans la cellule b2.

Je remercie d'avance les âmes charitables qui pourront m'éclairer.

Bonne soirée et bonne année à tous
 

Pièces jointes

  • Untitled.png
    Untitled.png
    3.4 KB · Affichages: 4
Bonjour Danrigx, et bienvenu sur XLD, dysorthographie,
Je pense plutot que c'est B3:B15 à effacer, et non B2:B15 car si on efface B2 alors il sera autorisé d'écrire.
Un essai en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [B3:B15]) Is Nothing Then
    If [B2] = "Arrêt" Then [B3:B15].ClearContents: [B2].Select
End If
End Sub
 

Pièces jointes

Dernière édition:
Bonsoir damrigx, le forum,

Avec une Worksheet_Change c'est simple :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If CStr([B2]) = "Arrêt" Then [B3:B15] = Empty
Application.EnableEvents = True
End Sub
Grâce à CStr les valeurs d'erreur ne posent pas de problème.

A+
 
Bonjour oui en effet il ne faut pas effacer à partir de b2 mais b3.
Merci pour votre aide sylvanu et job75, j'ai écrit vos programme dans vba en créant un module mais après je ne sais pas si il faut les affecter et/ou comment le faire.
 
Re,
Worksheet_SelectionChange est une macro dite événementielle. Elle s'exécute automatiquement sur un évènement. Ici sur un changement de valeur dans une cellule.
Et Worksheet_Change s'exécute automatiquement quand on clique sur une cellule.

Cette macro ne doit pas être mise dans un module mais dans la feuille elle même. Voir PJ #3.
Ouvrez l'éditeur VBA et à gauche cliquez sur Feuil1 :

1767876592766.png

A noter que pour les macros événementielles, le nom ne doit pas être changé. Il est fixé par le VBA.
 
Ok en effet je viens d'essayer et ça marche je crois que j'aurais pu y passer la journée mdr. Les deux programmes que vous m'avez donné fonctionne mais j'ai choisi celui de job75 qui ne renvois pas à la cellule b2.
En tout cas merci pour vos réponses, c'est très sympa.
Bonne journée et merci encore
 
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If CStr([c3]) = "Arrêt" Then [c4:c17] = Empty
If CStr([c3]) = "Arrêt" Then [G3:G17] = Empty
If CStr([c3]) = "Arrêt" Then [K3:K17] = Empty
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If CStr([c19]) = "Arrêt" Then [c19:c24] = Empty
If CStr([c19]) = "Arrêt" Then [G19:G24] = Empty
If CStr([c19]) = "Arrêt" Then [K19:K24] = Empty
Application.EnableEvents = True
End Sub
 
Vous n'avez pas le droit de mettre deux macro qui ont le même nom dans un même module ou une même feuille. Il ne peut n'y en avoir qu'une seule.
Une des façons de faire :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If CStr([c3]) = "Arrêt" Then [c4:c17,G3:G17,K3:K17] = ClearContents
If CStr([c19]) = "Arrêt" Then [c19:c24,G19:G24,K19:K24] = ClearContents
Application.EnableEvents = True
End Sub
 
Code:
Private Sub Worksheet_Change1(ByVal Target As Range)
Comme dit au post précédent :
A noter que pour les macros événementielles, le nom ne doit pas être changé. Il est fixé par le VBA.
Donc si vous voulez que la macro soit reconnue automatiquement, elle doit s'appeler :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour