Alerte au premier doublon trouvé

Bonjour à tous,

Dans le fichier ci-joint, vous avec 1 tableau de tirage au sort avec 3 cases au dessus qui permettent de lancer un tirage au sort, supprimer l'ensemble des résultats du tirage et juste supprimer le dernier tirage...

J'aimerais pouvoir savoir quand un doublon est tiré. (histoire de ne pas tirer 2 fois la même personne).

J'ai essayé de faire un tableau sur la droite permettant de chercher le premier doublon mais je dois avoir des soucis dans ma formule. Le mot "doublon" apparait quand mes cellules sont vides...

L'idéal serait d'avoir un message me disant : "attention, personne déjà tiré au sort, veuillez supprimer la dernière ligne pour relancer le tirage" (pour les pros VBA?)

Sinon je le ferai apparaitre dans une cellule via une formule.

Si d'autres idées je prends !

Impatient de voir vos solutions En vous remerciant !

bonjour

j'espère que mon fichier répond à ton probmème

Bonjour Gullaud,

Il répond parfaitement !

Etant assez médiocre en VBA, pourrais-tu m'expliquer la boucle ? Et qu'est ce que tu entends par nb_ligne et parcours_ligne ?

 nb_ligne = Range("TAB").Rows.Count
 parcours_ligne = nb_ligne - 1
 While parcours_ligne <> 0 And Range("TAB").Cells(parcours_ligne, 2) <> Range("TAB").Cells(nb_ligne, 2)
    parcours_ligne = parcours_ligne - 1
 Wend

Merci d'avance

nb_ligne ''nb_ligne est une variable (on choisit le nom que l'on veut)

Range("TAB").Rows.Count : calcule le nombre de lignes du tableau "tab"

donc nb_ligne sera égal au nombre de lignes du tableau "TAB"

parcours_ligne est également une variable, qui prend la valeur de nb_ligne-1

parcours_ligne = nb_ligne - 1

la boucle while décremente parcours ligne et on sort de cette boucle quand on a un doublon ou que on a parrcouru tout le tableau

While parcours_ligne <> 0 And Range("TAB").Cells(parcours_ligne, 2) <> Range("TAB").Cells(nb_ligne, 2)

parcours_ligne = parcours_ligne - 1

Wend

bonjour, il faut profiter du fait qu'on a un tableau !

     Set lo = Sheets("Tirage").ListObjects("TAB")     'ce tableau
     If lo.ListRows.Count Then     'il n'est pas vide
          Set c = lo.ListColumns("Nom de naisance").DataBodyRange   'plage des noms de naisance
          r = Application.Match(c.Cells(c.Rows.Count, 1).Value, c, 0)     'recherche premier occurence du valeur de la derniere cellule
          If r <> c.Rows.Count Then MsgBox "le dernier tirage est un doublon" & Chr(10) & "supprimmer la dernière ligne"     'si r n'est pas la derniere ligne ....
     End If

@Gullaud, votre solution compare les textes avec distinction des majuscules en minuscules, si nécessaire, il faut utiliser Option Compare Text ou Strcomp ou lcase/ucase

Bonjour,

Je vous remercie pour vos précieux retours, ainsi que pour les explications !

J'ai réussi à adapter avec des formules. Dés qu'un doublon est trouvé, cette formule me renvoie "Doublon" dans une cellule. (donc soit elle est vide, soit elle contient "doublon" à l'actualisation).

J'aimerais que quand cette cellule contient ce mot, un message d'alerte arrive.

J'ai essayé :

Sub Macro()
  If WorksheetFunction.CountIf(Cells(1, 19), "Doublon") Then
    MsgBox ("Attention doublon")
  End If
End Sub

Mais ça ne fonctionne pas...

Avez-vous une solution ?

Rechercher des sujets similaires à "alerte premier doublon trouve"