bonsoir à tous.
j'ai un classeur qui contient un tableau identique sur plusieurs feuilles. j'aimerai que si la cellule A1 de la feuille 1 contient une valeur x, il soit impossible de saisir la meme valeur sur les cellules A1 des autres feuilles.
si quelqu'un a une idée je suis prenneur. merci
La question me paraît pourtant assez claire, voyez le fichier joint et cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim F As Worksheet, x$
Set F = Feuil1 'feuille de référence
If Sh.Name = F.Name Then Exit Sub
Set Target = Intersect(Target, Sh.UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target
x = LCase(CStr(Target))
If x <> "" Then
If Target.Row > 1 Then
If x = LCase(CStr(F.Range(Target.Address))) Then
Application.EnableEvents = False 'désactive les évènements
Application.Undo 'annule l'entrée
Application.EnableEvents = True 'réactive...
Cette demande est trop nébuleuse, comme tu peux le voir aucune réponse depuis sa création.
As-tu un petit exemple de quelques lignes à nous mettre sur fichier?
La question me paraît pourtant assez claire, voyez le fichier joint et cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim F As Worksheet, x$
Set F = Feuil1 'feuille de référence
If Sh.Name = F.Name Then Exit Sub
Set Target = Intersect(Target, Sh.UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target
x = LCase(CStr(Target))
If x <> "" Then
If Target.Row > 1 Then
If x = LCase(CStr(F.Range(Target.Address))) Then
Application.EnableEvents = False 'désactive les évènements
Application.Undo 'annule l'entrée
Application.EnableEvents = True 'réactive les évènements
Exit Sub
End If
End If
End If
Next
End Sub
La question me paraît pourtant assez claire, voyez le fichier joint et cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim F As Worksheet, x$
Set F = Feuil1 'feuille de référence
If Sh.Name = F.Name Then Exit Sub
Set Target = Intersect(Target, Sh.UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target
x = LCase(CStr(Target))
If x <> "" Then
If Target.Row > 1 Then
If x = LCase(CStr(F.Range(Target.Address))) Then
Application.EnableEvents = False 'désactive les évènements
Application.Undo 'annule l'entrée
Application.EnableEvents = True 'réactive les évènements
Exit Sub
End If
End If
End If
Next
End Sub
Merci infiniment.
J'avais mis ce projet aux oubliettes faute de solution. Je l'ai déterré pour nécessité de service et boom ! Je trouve qu'il a été résolu