XL 2016 generateur d ID incrementiel avec date

kontractor08

XLDnaute Nouveau
Bonjour à tous (tes)

je viens vers vous et vos connaissances.
j ai besoin de créer un identifiant reprenant la date du jour et s incrémentant d un nombre à chaque fois que je scannerai un code barre.

ex:
date du jour 24/05/2020
premier numéro 0001

format attendu 202005240001
202005240002 etc...

Vous remerciant par avance
 

cp4

XLDnaute Barbatruc
Bonjour Kontractor08:), Thierry;),

@kontractor08 : En fait, j'ai laissé Thierry te venir en aide car il est plus armé que moi en vba.
J'ai suivi la discussion. Je trouve que ton tableau Structuré est bizarre dans le sens qu'il y a déjà 2 lignes d’entête; et 2 entêtes de colonne (colonne A et B).
Ensuite, par rapport à ta demande initiale (incrémentation d'id), je constate qu'il y a 2 incrémentations: ID PATIENT CHU et ID PATIENT FAC
Merci d'être plus clair. Je pense que ton projet en l'état est voué à l'échec.

Dans ton code remplace
L = WS.Range("C103").End(xlUp).Row
par
L = Range("C" & Rows.Count).End(xlUp).Row

A+
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @cp4, @kontractor08 , Le forum

Merci @cp4, en fait je ne pense pas que celà change grand chose, mais va savoir.
Non la problématique c'est toujours pour moi de savoir quel évènement déclenche quoi...

Dans la v02 je simule le retour du scan code bar en saisissant une valeur en colonne "C", donc une saisie, l'USF s'ouvre, on remplie, et on incrémente ID PATIENT FAC... Le USF se ferme une autre saisie, l'USF s'ouvre et ainsi de suite...

Mais là où je ne sais plus c'est que @kontractor08 nous montre une série de code à barres dans son avant dernier post:
20144161703
20144144703
20144152703
20145002503
20145004502
etc
Normalement un scan douchette à main envoie un code barre à la fois, donc pareil que ma simulation en saisie... Ce que je ne sais pas, c'est comment le USF doit réagir à ça ?

Le fait de mettre l'ouverture du USF dans WorkBook Open comme l'essai de @kontractor08 n'est, pour moi, pas du tout le bon endroit.

Il y a multe-possibilités :
  • On met les nouveaux Code à barres non-traités dans une ListBox du USF et on doit les traiter à partir de là ?
  • On les selectionne sur la feuille et l'USF doit s'ouvrir ?
  • On , on on on ... C'est plein de possibilité...
Voilà où en on est, sinon le Numéro ID PATIENT FAC 202005290001 devrait bien s'incrémenter depuis la v02...

Bien à toi, à vous
@+Thierry
 

cp4

XLDnaute Barbatruc
Salut @_Thierry ;),

D'après ce que j'ai compris. La douchette récupère le code dans l'userform. Comme nous n'avons pas de douchette, il simule cette dernière en appelant l'userform en saisissant un code dans la colonne C.

Le gros problème à mon avis vient du fait que les colonnes A/B sont pré-remplies alors que le tableau structuré doit être alimenté à partir de l'userform. En effet, tel qu'il est la récupération de la dernière ligne non vide est du coup erronée, c'est toujours la 103.

Après moult essais, la seule commande qui renvoie la bonne ligne est Range("C7").End(xlDown).Row

J'utilise ton fichier pour essayer au moins d’incrémenter et d'enregistrer pour le moment.
Je me demande aussi où est enregistrer la combobox2 ("GLENET MARIE","Personne x","Personne y","Personne z").

A+
 

cp4

XLDnaute Barbatruc
J'ai supprimer l'ouverture du formulaire à l'ouverture du fichier.
Faire simulation code barre en saisissant quelque chose dans la colonne C.
à tester.
 

Pièces jointes

  • FORMLAIRE COVID V6 .xlsm
    92.5 KB · Affichages: 8

kontractor08

XLDnaute Nouveau
Je vous envoie un fichier demain
En effet je me suis rendu compte que les colonnes À et B posaie't problème et je les ai donc sortie du tableau
Mon tableau à donc une plage de C7:O102 à présent

La combobox2 contenant Marie personne x etc ne renseigne rien pour le moment mais sera attirée à remplir la case" réalisé par " dans l en-tête

Donc dans la chronologie

1/ ouvrir l useform au lancement du fichier Excel et
2/ sélection combobox2 du nom de la personne (qui ne doit pas s évader de l useform lors de la validation)
3/ scan avec la douchette du 1er code barre qui rempli la textbox1 ID PATIENT CHU ET déclenchement de la génération de L'ID PATIENT FAC en textbox2
4/ sélection de l ORIGINE en combobox1 CHU REIMS ou UNILABS avec déclenchement de la génération de la date et heure en textbox3
5/ validation de l useform avec le bouton valider et suivant

copie de toutes les valeurs de l useform dans le tableau
suppression des donnees des textbox1 et 3 , combobox1
incrémentation de ID PATIENT FAC de +1

Pour rappel ces chiffres sont de vrais valeur issues de scan avec la douchette pour faire les essais

encore un grand merci à vous tous
 

cp4

XLDnaute Barbatruc
Je vous envoie un fichier demain
En effet je me suis rendu compte que les colonnes À et B posaie't problème et je les ai donc sortie du tableau
Mon tableau à donc une plage de C7:O102 à présent

La combobox2 contenant Marie personne x etc ne renseigne rien pour le moment mais sera attirée à remplir la case" réalisé par " dans l en-tête

Donc dans la chronologie

1/ ouvrir l useform au lancement du fichier Excel et
2/ sélection combobox2 du nom de la personne (qui ne doit pas s évader de l useform lors de la validation)
3/ scan avec la douchette du 1er code barre qui rempli la textbox1 ID PATIENT CHU ET déclenchement de la génération de L'ID PATIENT FAC en textbox2
4/ sélection de l ORIGINE en combobox1 CHU REIMS ou UNILABS avec déclenchement de la génération de la date et heure en textbox3
5/ validation de l useform avec le bouton valider et suivant

copie de toutes les valeurs de l useform dans le tableau
suppression des donnees des textbox1 et 3 , combobox1
incrémentation de ID PATIENT FAC de +1

Pour rappel ces chiffres sont de vrais valeur issues de scan avec la douchette pour faire les essais

encore un grand merci à vous tous
L'essentiel est que tu me dises si la version 6 répond en partie à tes attentes.
Je pense que ce qui pose problème est le renvoi de la dernière ligne non du tableau prérempli.
Il faut alors utiliser XlDown au lieu de xlUp.
 

cp4

XLDnaute Barbatruc
Bonjour,
à tester v7. J'ai ajouté des contrôles dans le formulaire juste pour une simulation. Ces derniers seront à supprimer avec leurs codes correspondants.

Bonne journée.
 

Pièces jointes

  • FORMLAIRE COVID V7 .xlsm
    94.4 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
D'après ce que j'ai compris. La douchette récupère le code dans l'userform. Comme nous n'avons pas de douchette, il simule cette dernière en appelant l'userform en saisissant un code dans la colonne C.

Bonjour @cp4
C'est marrant comme quoi chacun peut interpréter les choses complètement différemment. J'ai peut-être tout à fait mal compris car j'ai été influencé par un boulot que j'avais fait pour un pôte dans l'industrie pharmaceutique qui lui récupérait un code dans la cellule A d'un classeur Excel à chaque scan... Du coup dans ma tête le point de départ c'était la douchette...

En relisant le tout, je ne sais plus quoi penser maintenant.
On verra ce que nous expliquera @kontractor08

Et sinon oui, le Tableau aussi est assez mal structuré sur l'original, y compris un zoom horrible ! ;)
Sinon oui pour l'incrémentation on est bon tous les deux... Mais reste toujours
Non la problématique c'est toujours pour moi de savoir quel évènement déclenche quoi...

On verra bien ...
Bien à toi, à vous
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour,

1/ ouvrir l useform au lancement du fichier Excel et
2/ sélection combobox2 du nom de la personne (qui ne doit pas s évader de l useform lors de la validation)
3/ scan avec la douchette du 1er code barre qui rempli la textbox1 ID PATIENT CHU ET déclenchement de la génération de L'ID PATIENT FAC en textbox2
4/ sélection de l ORIGINE en combobox1 CHU REIMS ou UNILABS avec déclenchement de la génération de la date et heure en textbox3
5/ validation de l useform avec le bouton valider et suivant

Pour cet ordre logique j'ai des questions :
1) Soit
2) Ok
3) As-tu testé ceci, de mon expérience, le Firmware d'un scan douchette "sait" envoyer à une cellule de feuille Excel (et éventuellement passer à la suivante en dessous pour les scans successifs sans arrêter la connexion) mais je ne sais pas si ce Firmware peut envoyer à un Control ActiveX TextBox qui de plus sera dans un Userform ? D'où des doutes sur le reste des évènements...
4) Ok
5) Ok

En plus le fait que le UserForm soit déjà ouvert, au moment de 3), et qu'il soit Modal, je me demande même si il ne va pas interférer sur l'écriture de la Feuille Active depuis le Scanner...

Enfin voilà...
Bien à vous
@+Thierry
 

kontractor08

XLDnaute Nouveau
Re Bonjour,



Pour cet ordre logique j'ai des questions :
1) Soit
2) Ok
3) As-tu testé ceci, de mon expérience, le Firmware d'un scan douchette "sait" envoyer à une cellule de feuille Excel (et éventuellement passer à la suivante en dessous pour les scans successifs sans arrêter la connexion) mais je ne sais pas si ce Firmware peut envoyer à un Control ActiveX TextBox qui de plus sera dans un Userform ? D'où des doutes sur le reste des évènements...
4) Ok
5) Ok

En plus le fait que le UserForm soit déjà ouvert, au moment de 3), et qu'il soit Modal, je me demande même si il ne va pas interférer sur l'écriture de la Feuille Active depuis le Scanner...

Enfin voilà...
Bien à vous
@+Thierry


bonjour Thierry et Cp4
je suis en train de tester le fichier V7

alors @thierry

ma demande de lancer l useform au démarrage est juste pour éviter la saisie ou les erreur dans le fichier excel, il faudrait le moins d interactions possibles avec celui ci qui de préférence devra se faire remplir uniquement grâce à l useform

alors pour la douchette
lorsque je fais un scan d un code barre elle me renseigne bien le numéro ID PATIENT CHU correspondant du code barre et je faisais passer a la suite avec un

sub textbot_change
if textbox="" then
end if
coboboxORIGINE.setfocus
end sub

avec une detection de caractere non numeric

if notnumeric


au niveau de l incrémentation c est très bien exactement ce qu il faut

par contre il faudrait si possible que le nom de l opérateur saisi a l ouverture soit bloqué pour ne pas qu il puisse être modifié entre deux saisies de code barre

et pour finir

dans mon tableau excel

le tableau s étend de C7: O102

colonne C = code barre 'reste vide car les cellules accueillerons des code barre collés en étiquette venants du CHU


'renseigné par l useform
Colonne D = ID PATIENT CHU 'résultat du scan du code barre 'renseigné par l useform
Colonne E = ID PATIENT FAC
Colonne F = ORIGINE
Colonne G =date de prélèvement

Colonne H I J K L M N 'seront renseignées par import de fichier après les analyses (import run)

merci encore pour toute votre implication
 

cp4

XLDnaute Barbatruc
@kontractor08
par contre il faudrait si possible que le nom de l opérateur saisi a l ouverture soit bloqué pour ne pas qu il puisse être modifié entre deux saisies de code barre
Si tu vois dans le code, il y a Unload Me et Useform.Show. C'est ce qui explique que la combo se vide. Tu ne nous as pas dit où sera transféré le nom de la personne sur la feuille.
Car on peut récupérer le nom à l'ouverture du formulaire.
le tableau s étend de C7: O102
Je ne suis pas d'accord. Ton tableau est ce qu'on appelle un tableau structuré (de A7:O102). Pourquoi étendre préalablement un tableau qui par défaut s'étend à chaque ajout de lignes et/ou de colonnes.
colonne C = code barre 'reste vide car les cellules accueillerons des code barre collés en étiquette venants du CHU
Il suffit de neutraliser la ligne de code en la mettant en commentaire ou en la supprimant.

Où doit-on mettre le nom de la personne, enregistrer par ou extraction réalisée par?

Pour test j'ai mis le nom enregistrer par. à tester v8

A+
 

Pièces jointes

  • FORMLAIRE COVID V8 .xlsm
    99 KB · Affichages: 9

kontractor08

XLDnaute Nouveau
bonjour à tous

( Je ne suis pas d'accord. Ton tableau est ce qu'on appelle un tableau structuré (de A7:O102). Pourquoi étendre préalablement un tableau qui par défaut s'étend à chaque ajout de lignes et/ou de colonnes )

tu à raison j me suis mal exprimé
j voulais juste dire que le tableau n ira jamais plus loin que O102

( tu vois dans le code, il y a Unload Me et Useform.Show. C'est ce qui explique que la combo se vide. Tu ne nous as pas dit où sera transféré le nom de la personne sur la feuille.
Car on peut récupérer le nom à l'ouverture du formulaire. )

je vous renvois le fichier nouvelle version j ai reimporté le max de vos codes mais je n arrive pas à retrouver celui qui ajoute le texte de la comboagent dans la feuille SERIE A cellule E4

j ai du rajouter des lignes supplémentaire au dessu du tableau car le labo en a besoin pour modifier les entête du coup j ai réadapté le code en fonction (si je n ai pas fais d erreur )
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa