éviter saisie de doublons

chilo

XLDnaute Occasionnel
bonjour le forum

je voudrais éviter la saisi de doublons dans un classeur

explication
j'ai un classeur avec 12 feuilles
et je voudrais éviter la saisie de doublons dans ces feuilles.
j'ai trouvé cet exemple sur le forum et je voudrais l'élargir sur les autres feuilles

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans les lignes précédentes
' If Application.WorksheetFunction. _
' CountIf(Range(Cells(2, 1), _
' Cells(Target.Row, 1)), Target.Value) > 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "Vous avez déjà saisi ce numéro -- recommencer"
Target.Value = ""
Target.Select
End If

End If

End Sub

merci de m'apporte votre aide
à bientot
 

Excel_lent

XLDnaute Impliqué
Re : éviter saisie de doublons

Salut chilo, matthieu33,
re aux autres et aux nouveaux.

Il me semble que tu as adapté la macro pour ne tester que la première colonne. Dans ce cas, le code peut se simplifier ainsi :
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

  If Target.Column = 1 And Application.WorksheetFunction. _
    CountIf(Range("A:A"), Target.Value) > 1 Then
        MsgBox "Vous avez déjà saisi ce numéro -- recommencer"
        Target.Value = ""
        Target.Select
  End If
End Sub
Il est à écrire dans le module de chacune des 12 feuilles si tu veux le même test partout !

 

Pierrot93

XLDnaute Barbatruc
Re : éviter saisie de doublons

Chilo, Mathieu, Excel-Lent

@Excel-Lent
on peut également utiliser les modules de classes pour les appels de procédures événementielles pour les feuilles. Ce qui évite de recopier les procédures sur tous les modules de feuille. Comme hier tu étais interressé par le sujet je joins un petit exemple, module de classe avec événement change, qui se déclenche dès l'instant ou tu effectues une modification sur une feuille. En espérant qu'il te soit utilie.

bonne journée
@+
 

Pièces jointes

  • Classeur1.xls
    32.5 KB · Affichages: 149
  • Classeur1.xls
    32.5 KB · Affichages: 160
  • Classeur1.xls
    32.5 KB · Affichages: 156

Pierrot93

XLDnaute Barbatruc
Re : éviter saisie de doublons

Re

pour répondre au problème de Chilo, je modifierais dans le fichier joint précédemment, la procédure événementielle du module de classe comme suit :

Code:
Private Sub mafeuille_Change(ByVal Target As Range)
Dim ws As Worksheet, x As Range
If Target.Count > 1 Or IsEmpty(Target.Value) Then Exit Sub
For Each ws In Worksheets
    If ws.Name <> mafeuille.Name Then
        Set x = ws.Cells.Find(Target.Value, , xlValues, xlWhole, , , False)
        If Not x Is Nothing Then
            MsgBox "Valeur déjà présente dans l'onglet " & ws.Name _
            & " en " & x.Address
            Application.EnableEvents = False
            Target.Value = ""
            Application.EnableEvents = True
        End If
    End If
Next ws
End Sub

@+
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : éviter saisie de doublons

Re

Attention, l'initialisation se fait à l'ouverture du classeur, après avoir modifié le code dans le module de classe (coller le code que j'ai donné dans le post de 8h32") , fermes et enregistres le classeur, puis tu le ré-ouvres, cela devrait fonctionner... testes et dis moi...
@+
 

Excel_lent

XLDnaute Impliqué
Re : éviter saisie de doublons

Salut à tous et aux autres.

Ci-joint, une adaptation du fichier de Pierrot (merci encore).
On se retrouve confronté au même problème qu’avec Application.EnableEvents quand une erreur est commise avant le rétablissement (=True) ou quand celui-ci a été oublié.

Une autre façon de procéder (si on est gêné par les macros) est de sélectionner les feuilles une par une en leur totatilé et Données -> Validation -> Autoriser : nombre entier -> Données : différente de -> valeur :’valeur désirée’, avec accompagnement de message ou pas (cf Feuil3).
 

Pièces jointes

  • SaisieInterdite.zip
    10.2 KB · Affichages: 91

chilo

XLDnaute Occasionnel
Re : éviter saisie de doublons

bonjour le forum

pierrot93 après essai cela correspond à ce que je souhaite seulement
le petit souci une fois qu'on écrit le nombre 123456 dans janvier et février pour l'essai
si on entre de nouveau ce nombe il nous dit que c'est saisi dans les mois, bien que le numéro soit effacé

merci par avance
 

Discussions similaires

Réponses
3
Affichages
524

Statistiques des forums

Discussions
312 230
Messages
2 086 428
Membres
103 207
dernier inscrit
Michel67