éviter saisie doublon sur différentes colonnes

jtitin

XLDnaute Occasionnel
Bonjour à tous
je ne parviens pas à trouver dans le forum le solution:
éviter doublon dans la feuille entière OK mais dans différentes colonnes, par exemple colonne 1,3,5,7..
je ne trouve pas

ce code si dessous fonctionne pour la feuille entière, que faut il modifier pour agir sur des colonnes spécifiées.
je tape un texte dans n'importe quelle colonne 1,3,5.. si le texte existe alors msg doublon, texte tapé supprimé
si le texte est tapé dans d'autres colonnes 2,4,6.. les doublons ont les laisses

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
If Target.Value = "" Then
Exit Sub
End If
For Each Cell In Intersect(UsedRange, Cells)
If Cell.Address = Target.Address Then
GoTo suite
End If
If Cell.Value = Target.Value Then
MsgBox "saisissez un autre numéro, celui ci existe déjà"
Target.Value = ""
Target.Select
Exit For
End If
suite:
Next Cell
End Sub


Merci pour votre aide
 

david84

XLDnaute Barbatruc
Re : éviter saisie doublon sur différentes colonnes

Bonjour,
regarde du côté des méthodes Application.Union (qui renvoie l'union d'au moins deux plages) et Application.Intersect afin que ta macro ne se déclenche que si tu es dans la zone définie par Union (cf.l'aide d'Excel touche F1 pour ces 2 métodes) :
Set isect = Application.Intersect(Target, PlageUnion)
If Not isect Is Nothing Then
'ton code
End If
A+
 

jtitin

XLDnaute Occasionnel
Re : éviter saisie doublon sur différentes colonnes

Re bonjour
non en fait ce que je fait n'est pas bon.
n'importe quoi que je tape au niveau des plages à vérifier me renvoi le message "le mot existe ..."

mon code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Dim PlageUnion As Range

If Target.Value = "" Then
Exit Sub
End If
Set PlageUnion = Application.Union(Range("fruit"), Range("légume"), Range("céréales"))
For Each Cell In Intersect(Target, PlageUnion)
If Cell.Address = Target.Address Then
GoTo suite
End If
If Cell.Value = Target.Value Then
MsgBox "saisissez un autre Nom, celui ci existe déjà"
Target.Value = ""
Target.Select
Exit For
End If
suite:
Next Cell
End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : éviter saisie doublon sur différentes colonnes

Bonjour à tous


Un essai :​
VB:
Private Sub Worksheet_Change(ByVal Cible As Range)
Dim Msg$, oCell As Range, pCell As Range
    Msg = """ existe déjà." & vbLf & "Saisissez une autre valeur !"
    For Each oCell In Cible.Cells
        If Not IsEmpty(oCell) And (oCell.Column Mod 2) Then
            For Each pCell In UsedRange
                If Not IsEmpty(pCell) And (pCell.Address <> oCell.Address) Then
                    If pCell.Value = oCell.Value And oCell.Value <> "" Then
                        oCell.Value = InputBox("""" & oCell.Value & Msg)
                    End If
                End If
            Next
        End If
    Next
End Sub


ROGER2327
#5775


Dimanche 22 Clinamen 139 (Fête des Polyèdres - fête Suprême Seconde)
24 Germinal An CCXX, 5,1905h - roquette
2012-W15-5T12:27:26Z
 

Discussions similaires

Réponses
3
Affichages
513

Statistiques des forums

Discussions
312 184
Messages
2 086 008
Membres
103 089
dernier inscrit
johnjohn1969