Bonsoir Ya_v_ka, bonsoir le forum,
Ce que je te propose risque de ne pas te convenir car je n'ai pas bien compris ta requête. Les codes ci-dessous font la chose suivante:
Si, dans n'importe quelle colonne de la ligne 5, tu cherches à modifier une cellule dans laquelle il est écrit "X", un message t'en empêche...'
Si il y a autre chose que "X" dans la cellule ou si tu te trouves sur une autre ligne que la ligne 5 il n'y a pas de message et ton code moncodenormal suis son cours... Est-ce ça ?
Si oui, copie les lignes ci-dessous dans le composant VBA correspondant à la feuille dans laquelle tu voudrais qu'elles agissent [Feuil1(Feuil1)] par exemple. Pour cela, copie les lignes de code puis clique avec le bouton droit sur l'onglet de la feuille dans ton classeur et choisis l'option [Visualiser le code] et colle les lignes. [Alt]+[F11] pour revenir à Excel...
début du code
Private valeur As Variant 'déclare la variable valeur
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'à chaque changement de sélection
If Target.Row = 5 Then 'si cellule dans ligne 5
valeur = Target.Value 'définit la variable valeur (contenu de la cellule)
End If 'fin condition
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque modification d'une cellule
If valeur = "X" Then 'si le contenu avant modification (valeur) était = à X
Target.Select 'sélectionne la cellule (remonte car la touche [Entrée] a fait descendre)
Target.Value = "X" 'réécrit "X" dans la cellule (au lieu de la valeur modifiée)
MsgBox ("Pas de ça Lisette!") 'message
Target.Offset(1, 0).Select 'descend d'une ligne
Target.Select 'remonte d'une ligne (pour actualiser la variable valeur)
Exit Sub 'sort de la procédure
Else 'sinon
'moncodenormal
End If 'fin de la condition
End Sub
fin du code
À plus,
Robert