Private Sub Worksheet_Change(ByVal Target As Range)
Dim LesMotsCle As Range
Dim ZoneSaisie As Range
Dim C As Range
Dim Test As Integer
Set LesMotsCle = Sheets("Mots_cle").Range("motscle")
Set ZoneSaisie = Range("A22:A51")
If Intersect(Target, ZoneSaisie) Is Nothing Then Exit Sub
For Each C In ZoneSaisie.Cells
On Error Resume Next
Test = Application.Match(C.Value, LesMotsCle, 0)
If Err.Number = 0 Then
MsgBox "Premier mot clé trouvé :" & C.Value & vbLf & "Attention Vérifier si l'opération de dégazage est necessaire", vbExclamation
Exit Sub
End If
Next C
End Sub
Bonjour Marie,
Une solution en PJ. avec une plage de mots-clés nommée.
La macro se déclenche en cas de changement dans la plage A22:A51
A bientôtCode:Private Sub Worksheet_Change(ByVal Target As Range) Dim LesMotsCle As Range Dim ZoneSaisie As Range Dim C As Range Dim Test As Integer Set LesMotsCle = Sheets("Mots_cle").Range("motscle") Set ZoneSaisie = Range("A22:A51") If Intersect(Target, ZoneSaisie) Is Nothing Then Exit Sub For Each C In ZoneSaisie.Cells On Error Resume Next Test = Application.Match(C.Value, LesMotsCle, 0) If Err.Number = 0 Then MsgBox "Premier mot clé trouvé :" & C.Value & vbLf & "Attention Vérifier si l'opération de dégazage est necessaire", vbExclamation Exit Sub End If Next C End Sub
Essaie de précisersi un mot de la liste suivante est renseigné dans une ou plusieurs cellule de A22 a A51
Re Marie,
Elle se déclenche en cas de changement si un des mots clé est présent dans la plage A21:A55 :Donc je ne pense pas qu'elle fonctionne à l'envers.
- Au moment de sa saisie
- au moment d'une saisie quelconque si un des mots se trouve déjà dans la liste.
On peux limiter son action à la saisie de la cellule sélectionnée. Mais ce n'est pas ce que j'avais compris:
Essaie de préciser
A+
Private Sub Worksheet_Change(ByVal Target As Range)
Dim maliste(), x As Range, i As Byte
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A25:A51")) Is Nothing Then
maliste = Array("T.TH", "T.Thermique", "Thermique", "Traitement", "HV", "HB", "HRC", _
"Zingage", "Zn", "Znbi", "Surface", "T.Surface", "10,9", "12,9", "Classe", _
"Carbonitruration", "Carbo", "Trempe", "Trempe HF", "HF", "Nitrocarburation")
For i = LBound(maliste) To UBound(maliste)
Set x = Range("A22:A51").Find(maliste(i), , xlValues, xlWhole, , , False)
If Not x Is Nothing Then Exit For
Next i
If Not x Is Nothing Then
MsgBox "mot trouvé : " & x.Value & vbLf & "que faisons nous ensuite ?"
Else
MsgBox "mot non trouvé, que-fait on ?"
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LesMotsCle As Range
Dim ZoneSaisie As Range
Dim C As Range
Dim Test As Integer
Set LesMotsCle = Sheets("Mots_cle").Range("motscle")
Set ZoneSaisie = Range("A22:A51")
If Intersect(Target, ZoneSaisie) Is Nothing Then Exit Sub
For Each C In Target.Cells
On Error Resume Next
Test = Application.Match(C.Value, LesMotsCle, 0)
If Err.Number = 0 Then
MsgBox "Premier mot clé trouvé :" & C.Value & vbLf & "Attention Vérifier si l'opération de dégazage est necessaire", vbExclamation
Exit Sub
End If
Next C
End Sub