détecter et empecher la saisi d'un doublon

  • Initiateur de la discussion super-tonic60
  • Date de début
S

super-tonic60

Guest
Bonjour à tous,
J'ai un petit soucis, je vous explique.
J'ai un userForm avec plusieurs TextBox et un bouton.
Lorsque je clique sur le bouton les valeurs qui sont dans les textBox sont recopié dans une feuille Excel à un endroit précis.

Comment faire pour détecter que la valeur est déjà présente dans la colonne, et lancer une autre procédure.

en fait :
ColA | ColB | ColC |
Ref Nom Prénom

si Ref déjà présent on envoi pas
Si Nom déjà présent on demande

Et tout ça en VB. ??
 
@

@+Thierry

Guest
Salut Super-Sonic et le forum

J'avais fais une démo pour la même chose mais depuis un ComboBox qui est la cousine germaine par alliance d'une Textbox, depuis que son oncle à rencontré une ListBox...

Donc voici Lien supprimé qui gère les doublons au moment de la validation et que tu pourras adapter et où tu pourras ajouter un message d'alerte avant l'execution de la destruction de l'item en doublon...

Bon Aprèm.
@+Thierry
 
S

super-tonic60

Guest
Tu es simplement génial d'avoir répondu si vitte !!!

Mais j'ai un peu de mal à comprendre en fait. j'apprend vb depuis peux et que par moi même et des exemples ... donc j'ai un peu de mal des fois.

Peux tu m'expliquer :
If Range("a" & i) = Range("a" & i - 1) Then ->> là g un peu de mal ...
MsgBox "Doublon Détecté et Détruit : ->> là je comprend !



voilà mon code et le p'tit bout à toi

Private Sub cbOK_Click()
Range("LISTE!A2") = ufREFERENCE.tbPROCHAIN.Value

a = ufREFERENCE.tbPROCHAIN.Value

'détecte le doublon
If Range("a" & i) = Range("a" & i - 1) Then

MsgBox "Doublon Détecté: " & ufREFERENCE.tbPROCHAIN.Value, vbCritical

Unload Me
 
@

@+Thierry

Guest
Re Super-Tonic (lol après 2 fois que je t'appelle Super-Sonic !!! )

(c'est la nostagie de notre bon vieux Concorde National !)

Pour ceci :
For i = Range("A65536").End(xlUp).Row + 1 To 2 Step -1
If Range("a" & i) = Range("a" & i - 1) Then


En bon François je dis :

For i = Range("A65536").End(xlUp).Row + 1 To 2 Step -1
"pour chaque ligne comprise entre la première ligne non vide de la plage "A" rencontrée en partant du bas..... et ce en remontant jusqu'à la ligne 2, ligne par ligne en moins...

If Range("a" & i) = Range("a" & i - 1) Then
Si la cellule "A de la ligne où je me trouve est égale à la ligne au dessus... En suite ...

C'est évidemment là que tu dois intervenir !!

Pour la compréhension et tant que j'y suis voici la suite de la traduction en bon François (c'est pour le Concorde !! lol)

MsgBox "Doublon Détecté et Détruit : " & Range("a" & i - 1).Value, vbCritical, "Thierry's Démo"
Donc je fais un message où je reprends bien la valeur de la ligne située au dessus...

Range("a" & i).ClearContents
Je vide le contenu de la cellule ou je me trouve...

End If
Fin de ma condition SI

Next
On passe à la ligne "i" suivante dans ma boucle

On Error Resume Next
çà c'est quand il n'y a pas eu de doublon (donc pas de cellule vide)

Sheets("Feuil1").Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Et la je vire la Ligne Entire pour chaque celllule qui serait vide dans la colonne 1 ("A")

Voilà pour l'explication de texte !!!

Par contre pour ton bout de code... Il semble que tu aies encore pas mal de boulot... (Mais moi aussi maintenant au bureau, je ne repasserai qu'en fin de journée là)

En tout cas

a = ufREFERENCE.tbPROCHAIN.Value
c'est pas bon !

Bon Aprèm
@+Thierry
 
S

super-tonic60

Guest
Je te remercie vraiment Bcp !!
Je vais travailler sur tes explications. je devrais quand même arriver à quelque chose !! à force de percévérance ... et pis c'est comme ça qu'on apprend.

c'est vrai qu'il était bien ce super sonic ... ah bouh

@++
Guillaume (de mon vrai prénom)
 

Discussions similaires

Statistiques des forums

Discussions
312 318
Messages
2 087 209
Membres
103 493
dernier inscrit
Vidal Salvador