Microsoft 365 Nombre aléatoire unique fixe

Vince6

XLDnaute Nouveau
Tout d'abord bonjour :)
Nouveau sur le forum, et loin d'être une flèche sur Excel, j'ai passé un peu de temps pour voir si le sujet avait été évoqué et essayé de m'inspirer de sujets déjà traités, mais je n'ai pas trouvé mon bonheur, ni réussi à adapter à mon besoin ☹️
Mon besoin est le suivant: dans un fichier contenant des noms de clients, je dois générer, pour chacun d'entre eux, un numéro à 4 chiffres unique compris entre 1000 et 9999 (genre code PIN). Je dois pouvoir faire évoluer mon fichier (entrée d'un nouveau client ou suppression d'un ancien) toujours sans générer de doublon, ni modifier les codes déjà attribués.
Dans les différentes formules que j'ai trouvé et essayé d'utiliser, j'ai réussi à faire quelque chose de convenable ou niveau de la création des codes mais, le problème, c'est que dès que fais quoi que ce soit avec ou dans le fichier (ouverture, fermeture, entrée dans une cellule, insertions ligne ou colonne, etc...), tous mes codes PIN changent...😭
Je n'ai pas regardé du côté VBA car je ne maitrise pas du tout (on va dire que je sais que ça existe, guère plus!!!).
D'avance merci pour vos retours et pour votre aide.
 

vgendron

XLDnaute Barbatruc
Bonjour
sans ton fichier (sans donnée confidentielle), on ne pourra pas beaucoup t'aider
si tu génères les codes pin avec une formule à base de "Alea.entre.borne" c'est normal que les codes changent à chaque fois que la feuille est Recalculée.
c'est comme si tu faisais un calcul de la somme(A5:D5) ==> dès que tu changes une valeur entre A5 et D5, la somme est recalculée automatiquement
idem pour la fonction alea

il faudrait
soit figer les codes pin une fois générés===> par un copier collage special valeur (pour enlever la formule)
soit générer le code par vba uniquement sur les nouveaux clients, ou sur un client selectionné (pour un re-init du code pin par exemple)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Oui un fichier exemple serait le mieux.
J'ai fait ça pour un ami pas plus tard que la semaine dernière (adapté à vos nombres) :
Valable uniquement sur 365 et supérieur
=LET(
Nums;SEQUENCE(9000;;1000);
NonTirés;FILTRE(Nums;ESTERREUR(EQUIV(Nums;Clients[ID];0)));
INDEX(NonTirés;ALEA.ENTRE.BORNES(1;NBVAL(NonTirés)))
)
Où Clients[ID] est la colonne d'un tableau structuré

La fonction :
1 - définit une sequence de 9000 nombre
2 - définit un tableau expurgé des ID clients existants
3 - renvoie un item aléatoire de ce tableau des 'non tirés'

Bien entendu cette fonction doit être mise dans une cellule et sa valeur doit être copiée ou saisie pour un nouveau client à enregistré dans le tableau des clients.

En bref elle donne aléatoirement le prochain ID client dans la liste des disponibles

Cordialement
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 636
Messages
2 111 454
Membres
111 144
dernier inscrit
shura_77