Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 macro conditon

chinel

XLDnaute Impliqué
Bonjour tout le monde, je mets en place une macro qui doit effacer le contenu d'une plage de cellules d'après le contenu d'une autre cellule mais cela ne fonctionne pas, besoin d'aide merci !


Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A9").Value = "à l'arrêt" Then
Range("B8,B10,B11,B12,B13,B14,B15").Select
Selection.ClearContents
End If
End Sub
 

M12

XLDnaute Accro
Bonjour,
Teste comme ceci
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Application.Intersect(Target, Range("A9")) Is Nothing Then
   If Target.Value = "à l'arrêt" Then
     Range("B8,B10:B15").ClearContents
   End If
  End If
End Sub
 

job75

XLDnaute Barbatruc
Bonjour chinel, M12,

Ou comme ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("A9") = "à l'arrêt" Then Range("B8,B10:B15") = ""
Application.EnableEvents = True
End Sub
A+
 

chinel

XLDnaute Impliqué
Re,
Normal tu places deux fois l'instruction CHANGE

place un des deux codes fournis à la suite de ton premier Change
Comme ça ?

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B,G:G]) Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les évènements
If Target.Count > 1 Then Application.Undo: GoTo 1 'annule les entrées ou effacements multiples
If Target = "" Or (Application.CountIf([B:B], Target) + Application.CountIf([G:G], Target)) = 1 Then GoTo 1
Target.Select
MsgBox "Cette personne est déjà dans le planning !", 48, "Doublon"
Target = ""
1 Application.EnableEvents = True 'réactive les évènements
Application.EnableEvents = False
If Range("A9") = "à l'arrêt" Then Range("B8,B10:B15") = ""
Application.EnableEvents = True
End Sub
 

M12

XLDnaute Accro
j'aurais plutôt commencer par l'autre code au-dessus et le tien après, vu que tu places un exit sub sur ton code et des renvois
 

job75

XLDnaute Barbatruc
Donc il faut une seule macro Worksheet_Change :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A9,B:B,G:G]) Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les évènements
If Range("A9") = "à l'arrêt" Then Range("B8,B10:B15") = "": GoTo 1
If Target.Count > 1 Then Application.Undo: GoTo 1 'annule les entrées ou effacements multiples
If Target = "" Or (Application.CountIf([B:B], Target) + Application.CountIf([G:G], Target)) = 1 Then GoTo 1
Target.Select
MsgBox "Cette personne est déjà dans le planning !", 48, "Doublon"
Target = ""
1 Application.EnableEvents = True 'réactive les évènements
End Sub
 

chinel

XLDnaute Impliqué
Merci pour votre aide maintenant, il me reste encore à faire pour les autres groupes de travail
Donc si je comprends bien, pour les autres groupes de travail, je dois mettre:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A9,B:B,G:G]) Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les évènements
If Range("A9") = "à l'arrêt" Then Range("B8,B10:B15") = "": GoTo 1
if Range("A18")="à l'arrêt" Then Range("B17,B19:B22") = "": GoTo 1
If Target.Count > 1 Then Application.Undo: GoTo 1 'annule les entrées ou effacements multiples
If Target = "" Or (Application.CountIf([B:B], Target) + Application.CountIf([G:G], Target)) = 1 Then GoTo 1
Target.Select
MsgBox "Cette personne est déjà dans le planning !", 48, "Doublon"
Target = ""
1 Application.EnableEvents = True 'réactive les évènements
End Sub
 

Discussions similaires

Réponses
2
Affichages
198
Réponses
4
Affichages
466
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…