XL 2016 remplir des étiquettes selon multi critères

Sirberthoult

XLDnaute Occasionnel
Bonjour le forum,

je créer une application pour rédiger des étiquettes pour une biberonerie. confection de plusieurs dizaine de biberons par jour voir beaucoup plus en hiver...

j'ai bouclé ( je pense ...) la partie interface utilisateur pour rassembler les informations concernant la prescription...elle n'est surement pas parfaite...mais me convient.

Mon soucis, réside dans le remplissage de l'onglet "étiquettes" en fonction des informations sélectionnées grâce la SUB remplissage( ) de l'userform 2

en effet je dois optimiser chaque étiquettes en fonction de ce que chaque biberons contiendras.
j'ai réalisé un exemple avec le nom "AMANDO Gino", il faut cliquer sur le rond bleu de l'onglet "données" puis le bouton "réaliser des étiquettes" puis sélectionner dans le service de "HDJ" l'enfant amando gino et visualiser l'objectif de remplissage dans l'onglet "étiquette" : je n'ai pas besoin de couleur c'est juste pour l'exemple pour comprendre comment se repartisse les infos.

je cherche un début de solution pour adresser chaque infos à la bonne case dans chaque étiquettes. le bon lait en fonction de l'horaire (parfois 2 lait différents à des horaires différent), des compléments ( dans chaque biberons ou à part sur d'autres étiquettes ) et des épaississants ( dans chaque biberons ou à part sur d'autres étiquettes )...

bref comment remplir les étiquettes avec des informations qui peuvent varier selon les horaires qui varient aussi selon les patients...j'aimerais un exemple de codes que je pourrais compléter moi même.

merci d'avance pour vos propositions
 

Pièces jointes

  • les eti en neo 2 Remplissage 2.xls
    507 KB · Affichages: 13

vgendron

XLDnaute Barbatruc
Hello
déjà, j'ai une première question:
pourquoi un fichier avec extension .XLS et pas XLSX qui est le nouveau format d'excel depuis... pfiou.. longtemps en fait

vu qu'il y a des macros, le format serait .xlsm
je vois un module de classe vide.. est ce normal? peut on le supprimer ?
 

Sirberthoult

XLDnaute Occasionnel
Bonjour vgendron

concernant l'extension .xls oui effectivement... .xlsm c'est mieux

le module de classe vide peut être supprimé j'avais demander de l'aide pour transférer la gestion des chekbox à la fin de l'userform 2 qui est folle dans un module ... puis finalement j'ai préféré ne pas toucher ce qui fonctionne correctement. ...

j'ai reflechi un peu au probleme et je me demande si il ne faudrai pas dans un nouvelle onglet remplir des colonnes ( noms, chambres, liquigen, epaissisants ...) et en lignes les horaires( les checkbox horaires ) ( 8h, 11h,...)

puis reporter ensuite dans les étiquettes...
mais en faites je ne suis pas sur...
 

vgendron

XLDnaute Barbatruc
il faudrait que tu précises le besoin.. c'est pas bien clair
ta macro semble remplir différents champs==> OK
et donc.. que faut il faire en plus??

j'ai regardé ton code: effectivement.. il est assez lourd
surtout dans la gestion des checkbox..

dans ta macro "Checkbox" justement.. c'est censé faire quoi?
dans le case 7
cette partie de code me semble inutile
VB:
            If Ob_Pédiatrie.Value = True Or Ob_Maternité.Value = True Then
                CheckBox86.Caption = "03h"
                CheckBox86.Value = False
                CheckBox86.Visible = False
            Else
                CheckBox86.Caption = "02h"
                CheckBox86.Value = False
                CheckBox86.Visible = False
            End If

quel intérêt de changer un caption pour un checkbox qui n'est meme pas affiché..?
==> vu que tu le fais de plus en plus lorsque le case diminue==> ca permettrait de réduire le code

de ce que j'ai vu: dans 4 frames différentes (Lait1 et Lait2, epaississant 1 et 2) tu as toujours les 8 checkbox qui correspondent à un horaire de biberon
==> selon le nb de biberons tu affiches les checkbox
==> selon le service, certains horaires changent, d'autres non
il y a peut etre moyen de simplifier le code


par exemple: il est possible de boucler sur tous les checkbox d'une frame==> pas besoin de faire une ligne pour les 8 chekbox

exemple
VB:
Private Sub AllBiberons(Etat As Boolean)
    With Me.Frame9 'on set à Vrai tous les checkbox de la frame 9
        For Each ctrl In .Controls
            If TypeOf ctrl Is CheckBox Then
                ctrl.Enabled = Etat
            End If
        Next ctrl
    End With

    With Me.Frame8 'on set à Vrai tous les checkbox de la frame "Epaississant"
        For Each ctrl In .Controls
            If TypeOf ctrl Is CheckBox Then
                ctrl.Enabled = Etat
            End If
        Next ctrl
    End With

    With Me.Frame5 'on set à Vrai tous les checkbox de la frame "Lait"
        For Each ctrl In .Controls
            If TypeOf ctrl Is CheckBox Then
                ctrl.Enabled = Etat
            End If
        Next ctrl
    End With
   
    With Me.Frame6 'on set à Vrai tous les checkbox de la frame "Deuxième Lait"
        For Each ctrl In .Controls
            If TypeOf ctrl Is CheckBox Then
                ctrl.Enabled = Etat
            End If
        Next ctrl
    End With
End Sub

il suffit d'écrire
AllBiberons(true) pour cocher tous les checkbox
ou encore
AllBiberons(false) pour décocher tous les checkbox (ca remplace ta macro "valeurfaux"
 

Sirberthoult

XLDnaute Occasionnel
oui tu as surement raison ... il dois y avoir moyen de simplifier le code et je m'en chargerai surement par la suite...cependant cela fonctionne comme je le souhaite donc je passe aux remplissage des étiquettes qui me pose probleme...

la macro "remplissage" donne un resumé en en-tete d'étiquette mais je le perfectionnerai l'en-tete par la suite...
mon soucis c'est de remplir les infos dans chaque étiquettes... et que ce soit fonctionnelle quelque soit le nbre de biberons...

En gros, le bon lait au bon horaire si il y a 2 lait sinon le lait unique dans tout les horaires
puis si il y a des complement (ex: liquigen, ... ) il faut l'ajouter à l'etiquette au bon horaire, ou alors completement faire une serie d'etiquette (du nbr de bib) avec le complément seul si la case "a part" est sélectionée.

deja un bout de code qui fait ca...je pourrais m'amuser a l'adapter ou le modifier.
 

vgendron

XLDnaute Barbatruc
Déjà. je ne comprend pas
il y a à priori un maximum de 8 biberons. donc 8 étiquettes??
sur ton exemple.. j'en vois 20

pour remplir tes étiquettes.. les infos sont toutes présentes dans le formulaire:
plutot que de passer par une copie "partielle" des infos sur la feuille etiquette, une macro ne pourrait elle pas générer les etiquettes elle meme ? avec une boucle for i = 1 to NbBiberons..??


dans ton exemple, toujours, je ne vois pas le lien entre les différents types d'information...
à part Nom Prénom et N° de chambre..

j'ai l'impression que le code ne charge pas les infos telles que présentes dans le tableau BD3
de plus, les noms de colonnes ne correspondent pas forcément aux horaires mis dans les captions de tes checkbox..
impossible de s'y retrouver..
 

Sirberthoult

XLDnaute Occasionnel
8 biberons si c'est la prescription... donc 8 étiquettes on est d'accord.
8 autres étiquettes si il y a un complement( liquigen, fortema, ou épaisissant...) à préparer "à part" c'est a dire a rajouter au dernier moment et non pas directement dans le biberon.

le code qui sauvegarde et recherche les infos fonctionne tres bien chez moi...
ce code permet de se souvenir de ce qui a deja été préparé ou de créer un nouveau patient en inscrivant un nom, prénom,lait ...

essaye avec l'enfant gino amando en HDJ , si tu n'as rien changé dans ma sauvegarde cela correspond au resultat d'étiquette que je cherche à avoir. dans cette exemple l'enfant est en 7 biberons dont 2 lait différents. chaque bib contient du liquigen et si on a un certain lait ( confort 2 age dans l'exemple ) alors on rajoute un épaississant ( je précise que c'est un exemple...dans la réalité c'est débile...mais avec certain lait c'est probable.) Enfin on à un complément de fortema 2% à préparer à part...au total on a donc 14 étiquettes. les 6 derniére (peuvent/doivent ) etre vide.

j'ai des planches de 20 étiquettes au boulot
 

vgendron

XLDnaute Barbatruc
Dans la PJ, j'ai "juste" raccourci" ton code et renommé quelques frames "fr_xxxxx"
j'ai mis les données sous forme de table structurée

pour les étiquettes, je regarde demain
mais déjà une question
selon le type de lait, le type de formule et autre info saisie, comment sais tu (ou peut on trouver l'info) quelles étiquettes doivent inclure l'info??
exemple du NaCl==> ca n'apparait jamais sur les étiquettes?
 

Pièces jointes

  • les eti en neo 2 Remplissage 2.xlsm
    156.9 KB · Affichages: 6

Sirberthoult

XLDnaute Occasionnel
Bonjour vgendron, le forum

"Juste" ... moi ça m'aurait pris 2 jours....
et comme tu as pu le constater, j'empile le code, je tripote ce que je trouve par ci par là, et au final c'est très inesthétique...mais je me contente que ça tourne...
bref le code est plus clair et structuré. et je comprend que tu ai eu besoin de le faire pour t'y repérer.
j'ai testé et n'est pas trouvé d'attitudes différentes dans le code que tu as modifié...merci.

concernant les étiquettes de façon générale :

il faut partir du principe que si l'on renseigne un enrichissement ( liquigen, fortéma, Dextrine maltose,NaCl, Épaississant, ou autres ) alors cela dois être présent dans chaque biberons donc sur l'étiquette. sauf si on à coché à part pour un enrichissement, dans ce cas on dois réaliser x étiquettes ( du nbr de bib demandé ) avec en intitulé l'enrichissement en question. ( cette enrichissement sera préparé et étiqueté à part, et rajouté par les puéricultrices au dernier moment ).

si il y a 2 laits de sélectionnés, c'est pareil tout les enrichissements doivent être dans chaque biberons quelque soit le lait. seul l'épaississant 1 doit être dans le lait 1 et l'épaississant 2 dans le lait 2.

concernant les étiquettes de façon spécifique : ( là ça devient compliqué.... je n'en demande pas tant...j'aurais bricolé plus tard...mais si jamais je t'explique...)

pour le LIQUIGEN : on peut cocher " dans tous les bib" ou " 1 bib sur 2" : je pense que c'est clair... c'est la dose prescrite partout quelque soit le ou les laits , ou 1 biberon sur 2. et si c'est coché "à part" alors on fait x/2 (du nbr de bib demandé ) à part. le "1 bib sur 2", n'est possible que si le nbr de bib est paire ( forcément...) sinon la coche "1 sur 2 " n'est pas accessible.

pour le FORTEMA : c'est un enrichissement qui ne peut être ajouté que dans un " lait maternel" jamais dans un lait 1er Age, ni Lait 2éme Age, ni Lait Pré. donc si le lait sélectionné est maternel alors fortema dans chaque bib. mais si on à 2 Laits différents ( dont forcement 1 lait Maternel...) alors fortema que dans le lait maternel. et si on dois le préparer "à part" alors on prépare que le nombre d’occurrences correspondant au nbr de bib de lait maternel.

merci encore pour ton aide !
 

vgendron

XLDnaute Barbatruc
hello
avant de pouvoir coder, je pense qu'i va falloir préciser/définir un maximum de choses

Dans la frame "Biberons"
==> le nb de biberons donne le nombre d'étiquettes (hors étiquetes "spécifique")
ce nb correspond au nb bib Lait1 + nb bib lait2

Si il y a seulement une quantité 1 ==> elle s'applique à tous les biberons ? (lait 1 et lait 2)
si il y a aussi une quantité 2: elle s'applique uniquement aux biberons de lait 2 ??
peut il y avoir uniquement la quantité 2 ?
 

Sirberthoult

XLDnaute Occasionnel
presque...

Si 8 biberons alors 8 étiquettes ( qu'il y ai 1 lait ou 2 lait ) hors préparation " à part".

Si il y a 2 quantités : exemple : 8 bib peut donner: 4 X 15 ml lait 1 + 4 X 20 ml Lait 1 ( c'est pour augmenter les quantités chez les prématurés au sein d'une même journée...donc lait 1 14h, 17h, 20h, 23h et lait 2 2h, 5h, 8h, 11h....les journées commencent à 14h chez nous, car le matin prescription et réalisation des bib, ) donc ici la quantité 2 correspond au lait 1, et pas de présence de lait 2.

Mais 8 bib peut donner : 4 X 15 ml Lait 1 + 4 X 20 ml Lait 2 si un deuxième lait à été sélectionner. ( dans ce cas, c'est qu'on introduit progressivement un nouveau lait chez un prématuré...)( ici pour les horaires mieux vaut se référer aux horaire sélectionnés pour le deuxième lait au niveau des coches horaires )

et il n'y a jamais de quantité 2 seule.

j’espère être clair, concis et précis.
 

vgendron

XLDnaute Barbatruc
ha.. donc Quantité 1 et quantité 2 ne sont pas respectivement associées à Lait 1 et Lait2

TOUS les biberons (que ce soit Lait 1 OU Lait2) ont la quantité "Qté1 + Qté2"
Qté1 = une quantité de base
Qté2 = un surplus
 

vgendron

XLDnaute Barbatruc
voir en PJ
la macro Remplissage qui remplit un tableau de biberons
un biberon est défini par le type "t_biberon" dans le module "m_Déclarations"

pour l'instant, les enrichissements ne sont pas gérés

les étiquettes sont générées dans la feuille "Test_Etiquettes"
 

Pièces jointes

  • les eti en neo 2 Remplissage 3.xlsm
    158.1 KB · Affichages: 3

Sirberthoult

XLDnaute Occasionnel
ha.. donc Quantité 1 et quantité 2 ne sont pas respectivement associées à Lait 1 et Lait2
effectivement....ce n'est le cas que quand il y a 2 quantités et 2 lait

TOUS les biberons (que ce soit Lait 1 OU Lait2) ont la quantité "Qté1 + Qté2"
Qté1 = une quantité de base
Qté2 = un surplus

je comprend pas bien ta phrase...

en gros :
si :
1 seul quantité (q1) => lait 1 (q1) mais toujours que x bib
ou
1 seul quantité (q1) => lait 1 (q1) et Lait 2 (q2) mais toujours que x bib


si:
2 quantité (q1) et (q2) => Lait 1 (q1)(q2) mais toujours que x bib
ou
2 quantité (q1) et (q2) => Lait 1 (q1) et Lait 2 (q2) mais toujours que x bib
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 267
Membres
103 168
dernier inscrit
isidore33