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

XL 2019 interdire doublons sur plusieurs feuilles

  • Initiateur de la discussion Initiateur de la discussion salbingu
  • Date de début Date de début

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 !

salbingu

XLDnaute Nouveau
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
 
Solution
Bonjour salbingu, JHA, le forum,

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...
Bonjour à tous,

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?

JHA
 
Bonjour salbingu, JHA, le forum,

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
A+
 

Pièces jointes

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
 
- 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

Discussions similaires

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