empecher saisi de doublon

doudo

XLDnaute Nouveau
Bonjour à tous et merci par avance de l'aide que vous pourrez m'apporter!!

Malgré les nombreux sujets sur les doublons je ne trouve aucune réponse à mon problème:

Je voudrais empecher les utilisateurs d'entrer un doublon (que ce soit par la saisie clavier ou par un copié collé), voir le fichier en pièce jointe...

Il n'est pas inutile de souligner que mon fichier original est composé de 5000 lignes et 80 colonnes

Voilà un code de départ qui ne marche déjà pas:

Sub essai_doublon()
For i = 1 To 5000
For j = 1 To 5000
If i = j Then Exit Sub
If Cells(i, 10) = "" Then Exit Sub
If Cells(j, 10) = "" Then Exit Sub
If Cells(i, 10).Value = Cells(j, 10).Value Then MsgBox ("DOUBLON")

Next
Next
End Sub


Merci,

Doudo
 

Pièces jointes

  • test.xls
    31.5 KB · Affichages: 61
  • test.xls
    31.5 KB · Affichages: 73
  • test.xls
    31.5 KB · Affichages: 62

Excel-lent

XLDnaute Barbatruc
Re : empecher saisi de doublon

Bonjour Doudo,

Comme tu présente les choses, tu ne veux pas EMPECHER la saisie d'un doublon, mais plutôt PREVENIR l'utilisateur qu'il vient de saisir un doublon (par le biais de la MsgBox).

Si oui, voici ci-dessous une macro qui te conviendra :
Private Sub Worksheet_Change(ByVal Target As Range)
' Macro enregistrée le 13/03/2012 par Excel-lent

If Target.Column <> 3 Then Exit Sub

If Application.CountIf(Feuil1.Range("J2:J" & [J2].End(xlDown).Row), Cells(Target.Row, 1) & Cells(Target.Row, 3)) > 1 Then
MsgBox "Numéro de 'sous plan' déjà existant"
End If

End Sub

Macro à placer dans la Feuil1 et non pas dans un module.

Si tu souhaite empêcher la saisie d'un doublon, il te suffit de rajouter une ligne de code pour effacer le numéro de "sous plan" que vient de saisir l'utilisateur.

Ce qui donnerais :
Private Sub Worksheet_Change(ByVal Target As Range)
' Macro enregistrée le 13/03/2012 par Excel-lent

If Target.Column <> 3 Then Exit Sub

If Application.CountIf(Feuil1.Range("J2:J" & [J2].End(xlDown).Row), Cells(Target.Row, 1) & Cells(Target.Row, 3)) > 1 Then
MsgBox "Numéro de 'sous plan' déjà existant, donc supprimé"
End If

Range("C" & Target.Row).clearcontents

End Sub



Bonne après midi
 
Dernière édition:

doudo

XLDnaute Nouveau
Re : empecher saisi de doublon

Rebonjour Excel-lent

Au risque de paraitre exigeant, ta solution ne marche pas lorsque l'on saisie d'abord le sous plan et ensuite le budget...

J'AI DONC ESSAYE DE CHANGER :

If Target.Column <> 3 Then Exit Sub

PAR :

If Target.Column <> 1 OR 3 Then Exit Sub

ET PAR :

If (Not Target.Column = 1) Or (Not Target.Column = 3) Then Exit Sub

Mais cela ne fonctionne pas...Merci de m'éclairer à nouveau je ne pense pas que ça soit compliqué
 

Discussions similaires

Réponses
11
Affichages
304

Statistiques des forums

Discussions
312 339
Messages
2 087 414
Membres
103 542
dernier inscrit
feenix