Générer un numéro

  • Initiateur de la discussion Thomas®
  • Date de début
T

Thomas®

Guest
Bonjour le forum,

Je cherche un moyen de générer un numéro pour chaque saisie validé par un USF.

Je souhaite que ce numéro soit en relation avec les infos entrées

Exemple :

textbox1 = thomas
textbox2 = France
combobox1 = achat
textbox3 = 02/05/2005

Dans ce cas je souhaiterais que le numéro généré soit :
- 'THOFRACH0205_001'

THO = 3 premières lettre de tbox1
FR = 2 p lettre du tbx2
ACH = 3p lettre du cbx1
Puis le jours et mois (du txb3)
Puis _ avec une numérotation afin que si j'ai plusieurs fois les même critère avoir un numéro unique.

Comme ça si j'ai la même déclaration (même saisie dans les txtbox et combobox) le même jour avoir un n°THOFRACH0205_002

Mais que la le cas ou la saisie est différente reprendre le n°001

Exemple :
textbox1 = thomas
textbox2 = France
combobox1 = vente
textbox3 = 02/05/2005
THOFRVEN0205_001

J'ai essayé de plusieurs façon je n'y arrive pas

Je ne sais pas comment tronquer un textbox ou combobx afin d'y prendre les premières lettre?
Je ne sais pas non plus créer une boucle disant si le numéro généré est <> de tout ce qui ce trouve dans la colonne K (qui est la destination de ce numéro apres validation) alors lui attribuer _001 sinon prendre le dernier numéro identique et lui ajouter 1?

Bon c'est comme ça que je pensé pouvoir générer un numéro unique et cohérent mais je ne sais pas si Excel sait faire

D'avance merci pour votre aide
Thomas
 
F

François

Guest
Bonjour Thomas

pour ce qui est de tronquer les données il faut utiliser la fonction gauche('texte à tronquer ou cellule ou se trouve le texte';nbre de caractère souhaités) et concatener dans Excel ou bien une combinaison des fonctions LEFT('texte ou cellule ou variable issus de l a boite de dialogue , nbre de caracteres)

exple

var1='THOMAS'
var2='FRANCE'
var3='ACHAT'

NUM=LEFT(var1,3) & LEFT(var2,2) & LEFT(var3,3)

pour ce qui est du n°, c'est plus complexe

le plus simple serait de créer un n° unique qui s'incrémente systématiquement

dans le cas qui vous intéresse, il faudrait créer une boucle qui recherche les valeurs de n° et qui teste si le nouveau N° existe déjà puis qui incremente à partir du dernier trouvé
c'est faisable, mais d'une part cela suppose la mise en place de plusieurs boucles de type tant que et si alors et d'autre part plus votre fichier va grandir plus le temps de génération du n° va être long

cordialement

François
 
T

Thomas®

Guest
re,

Merci François pour votre reponse,
pour ce qui est de la création d'un numéro.

mon fichier ne sera jamais tres grand car je génére mes enregistrements dans une feuille pour chaque mois

au max je pense avoir 50 à 60 lignes par mois.

sinon si vous avez un moyen de générer un numéro qui s'incrémente des que les données concatené sont identiques.

Merci
Thomas
 

_Thierry

XLDnaute Barbatruc
Repose en paix
=> DEMO UserForm Incremental Number Unic Key

Bonjour Thomas, François, le Forum

François t'a donné une approche tout à fait correcte avec la concaténation des 'Left', mais j'ai trouvé l'idée interressante pour faire un UserForm Démo qui fera donc une incrémentation des numéros sur clés uniques.

Ce devrait tourner très vite même sur une grosse base, vu que je passe par un tableau.

Bon Après midi
@+Thierry [file name=USF-Building-Unic-Key-Number_20050502145237.zip size=10997]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/USF-Building-Unic-Key-Number_20050502145237.zip[/file]
 

Pièces jointes

  • USF-Building-Unic-Key-Number_20050502145237.zip
    10.7 KB · Affichages: 104
T

Thomas

Guest
RE,

la fonction LEFT(var,3) marche du toner.

mais pour ce qui est de rendre chaque numéro unique.

j'ai pensé à une technique mais comme je suis debutant je ne sais pas comment le faire.

en fait je ai pensé quand declarant plusieurs variable afin d' avoir plusieurs etape dans la création de mon numéro unique.

exemple :
Dim C As Range
dim Text As String
dim Text1 As String
Dim S As Byte,Num As Byte
Num = '001'
Text1 = LEFT(var1,3) & LEFT(var2,2) & LEFT(var3,3) & '_'
Text= Text1 & Num

For S = 1 To Sheets.Count
Sheets(S).Activate
With Sheets(S).UsedRange.Cells
Set C = .Find(Text, LookIn:=xlValues)
If Not C Is Nothing Then
Do
C.Select

... (ceci est un bout de code qui sert a rechercher des infos dans plusieurs page)

ce que je pense possible est qu'a l'aide d'une recherche de ce genre si il y a des reponses trouvé alors lui dire :

Text = Text1 & Num+1

puis refaire la même recherche avec si encore la presence d'une reponse alors Text = Text1 & Num+1

jusqu'a plus de reponse
afin que le numéro final puisse être enregistré.

comme mes numéro seront toujours enregistré dans la même colonne pour toutes mes feuilles je pense que si il est possible de restreindre ma recherche à une seul colonne par page je devrais gagné du temps?

si quelqu'un à une solution a mon problème
D'avance merci
Thomas
 
T

Thomas

Guest
Bonjour,

Merci _Thierry, ton USF est géniale.

franchement merci

mon mail precedent ne tené pas compte de ton USF car j'ai mis beaucoup de temps a le rédiger de ce fait je ne l'avais pas vu

sinon c'est impec

si ce n'est pas trop te demander penses tu que cela est possible de poursuivre l'incrementation sur plusieurs feuille (comme je le precise dans mon mail precedent??)

je vais deja regarder dans ton code (on ne sait jamais je peux peut être le trouver seul)

sinon penses tu que ma demarche precedente aurait pu marcher?

Un grand merci
Thomas
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO UserForm Incremental Number Unic Key

Re Bonjour Thomas, François, le Forum

En fait je ne vois pas vraiment l'intérêt de travailler sur plusieurs feuilles pour ce qui est de la recherche du numéro ? car en fait la feuille 'Reporting' pourrait même être cachée et te servirait à vérifier facilement tes numéros...

Pourquoi 'plusieurs feuilles' ? et comment savoir lorsque l'on doit changer de feuille ? tant niveau recherche que niveau de l'ajout du numéro clé unique ainsi généré ?

Sinon oui la méthode 'Find' travaille vite aussi mais tu auras du mal si tu ne changes pas 'LookIn:=xlValues' pour LookIn:=xlPart en ne cherchant que la première partie de la clé (THOFRACH0205 Sans le numéro 001) un peu comme je fais d'ailleurs avec ma variable 'MyKey'...

Voilà tout ce que je peux dire pour l'instant.

Bonne fin de Journée
@+Thierry
 
T

Thomas

Guest
Re:=> DEMO UserForm Incremental Number Unic Key

Bonjour _Thierry, François, le forum,

Merci pour ta reponse cela vient de me donner la solution

en fait la feuille est selectionné par un combobox

et c'est grace à cela que je sais ou aller enregistré mes info

mais si je reprends ton code en lui disant de faire exactement ce que tu fais (coller dans une feuille reporting (caché))

puis je lui demande de recoller le meme numéro unique mais là dans ma macro a l'endroit souhaité (grace a mon combobox).

cela éviterait de faire une recherche multisheet mais uniquement dans la feuille reporting (bien vu Thierry :silly: )

Un grand merci

sinon une question

cela veut dire quoi? \\'LookIn:=xlValues\\' ou LookIn:=xlPart

regarde la valeur??

Merci
Thomas&reg;
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO UserForm Incremental Number Unic Key

Bonjour Thomas, François, le Forum

Je te prie de m'excuszer pour cette réponse tardive, mais je suis sorti hier après mon dernier message.

En fait pour ta question, j'ai commis une erreur dans mes suggestions en mélangeant les paramètres de la méthode 'Find'.

En effet pour 'LookIn' en fait il ne peut s'agir que des constantes 'xlValues', 'xlFormulas' ou même 'xlComments'... Pour ce qui est de 'xlPart' ce n'est pas applicable dans le paramètre 'LookIn' mais dans 'LookAt' qui lui, supporte les constantes 'xlWhole' ou donc 'xlPart'.

Sorry pour la possible confusion engendrée.

Bonne Journée
@+Thierry
 

2fre

XLDnaute Nouveau
Bonjour le Forum :) un petit up sur ce thread de 2005 !

En parcourant le forum à la recherche d'une piste me rapprochant d'une solution, je suis tombé sur ce thread, le faisant défiler avec intérêt car la problématique exposée correspond parfaitement à la mienne, en effet je cherche un moyen de pouvoir générer des numéros de dossiers sous cette forme : NUMÉRO_CLIENT_DIVISION_PRODUIT_PROJET (ex. : 0302203878275_SAF_HA_ARMOIRE_LANCEMENT_ANNONCES_PRESSE) le numéro étant composé de la date du jour, suivi d'un numéro sur 4 digits correspondant à un chef de projet défini à l'avance (une date de naissance par exemple) et terminé par un "compteur" indiquant le nombre de projets crées par ce chef de projet.

conscient de la difficulté de cet exercice, je m'attends à revoir mes attentes à la baisse, mais j'aimerais le plus possible me rapprocher de cette idée.

cerise sur le gâteau, je suis totalement newbie, avec de très très très légères notions de programmation, avec un Excel 16 tournant sur macOS, sans mode dev....

aussi, je cherche donc un moyen d'utiliser des données concatenées afin d'y parvenir, et quand j'ai testé l'USF de _Thierry je me suis retrouvé en face d'une solution idéale pour ma problématique, si seulement je pouvais modifier / rajouter / supprimer des champs. comment pourrais-je faire pour le modifier si possible ? sinon pourrais-tu cher forum m'aider à réaliser ce "projet" en m'indiquant des tutos ou des fonctions qui me sont inconnue ?

Merci d'avance :)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @2fre le forum,

Ça ne rajeunit pas de revoir ce fil !

Je réponds depuis mon téléphone, donc pas évident de t'aider, mais je regarderai quand je serai en mesure d'avoir un ordi, mais probablement pas aujourd'hui ni demain...

Probablement d'autres contributeurs passeront par ce fil d'ici là

Bien à toi, à vous!
@+Thierry
 

2fre

XLDnaute Nouveau
Bonjour _Thierry

oui je suis allé chercher dans les tréfonds du forum :) merci de ta réponse c'est très gentil :)

en attendant, j'ai trouvé deux tutos de débutant qui, une fois fusionnés :p me permettrons, je penses d'avancer un peu :)

 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour 2fre, le Forum

J'ai mis un peu plus longtemps que prévu pour mon plonger dans cette demande (enfin rentré chez moi).
Voici ci-joint la Démo d'origine réadaptée à tes besoins 2fre pour autant que j'ai compris ta demande.
La clef unique est ainsi générée en tenant compte aussi d'un "compteur" indiquant le nombre de projets crées par ce chef de projet....

Je pense que ça devrait t'aider pour autant que ca fonctionne sous Mac et que tu puisses adapter...

Bon Week-End
Bien à toi, à vous
@+Thierry
 

Pièces jointes

  • XLD_2fre_USF-Building-Unic-Key-Number_v00.xls
    69.5 KB · Affichages: 8

Discussions similaires

Statistiques des forums

Discussions
312 843
Messages
2 092 757
Membres
105 525
dernier inscrit
jabyou