Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Sirberthoult

XLDnaute Occasionnel
Bonsoir, vgendron et Cousinhub

Bingo !
duo gagnant
effectivement le "exit sub" qui résoud le problème du point et de la virgule...( pourtant suis allez vérifier dans les vielles versions et il n'y avait pas non plus le "exit sub" mais ça fonctionnait....)

et j'ai retirer les 2 à .Add et bingo plus de problème.

je suis allez voir la version et 2010...
moralité j'ai des ordi en 2016 et des ordi en 2010...j'avais pas remarqué

merci à vous 2 !!
 

Sirberthoult

XLDnaute Occasionnel
Bonsoir

j'ai poursuivi un peu la mise en page ...et quelques tests..
j'ai su modifier des bugs mineurs...mais là je ne sais pas.

j'ai un problème de format de date enregistré en BD3
si je créer des étiquettes aujourd’hui , il enregistre 07/01/2023
il se croit en janvier...

pourtant dans le code le format semble bon...
j'ai regardé les option régionale de mon ordi mais à priori je suis bien en France...
 

Pièces jointes

  • les eti en neo 2 Remplissage 20(color).xlsm
    885.6 KB · Affichages: 5

Sirberthoult

XLDnaute Occasionnel
Finalement après quelques recherches, il semble qu'il y ai une nuance entre Excel et le vba en compréhension du format date...
Excel est paramétrable à nos formats
mais pas le vba qui reste américain...

bref j'ai changé
.ListColumns("Dernière Prépa").DataBodyRange(ligneEnreg) = Format(Now, "dd/mm/yyyy hh:mm")

par

.ListColumns("Dernière Prépa").DataBodyRange(ligneEnreg) = Format(Now, "mm/dd/yyyy hh:mm")

simplement...
a priori excel ou vba, devait corriger seul quand les dates avec des mois au dessus de 12 en inversant eux même le jour et le mois, car avant le problème n’apparaissait pas...
 

Sirberthoult

XLDnaute Occasionnel
Bonsoir le forum, vgendron,

j'ai mis en essai le programme aupres des biberonieres...
et j'ai eu un tas de bugue en retour par les utilisatrices ...des choses que je n'avais pas anticiper...mais dans l'ensemble j'ai su trouver une solution...
actuellement elles continuent de l'utiliser mais j'ai un bug dont je n'arrive pas a trouver de solutions...et je ne le comprend pas non plus d'ailleurs...

c'est dans cette partie:
VB:
Private Sub Nom_Change() 'lors de la saisie manuelle: gestion de la saisie semi-automatique
    If Nom = "" Then service: Prénom.SetFocus: Exit Sub
    
    Me.Nom = UCase(Me.Nom) ' Nom en Majuscule
    If Me.Nom.ListIndex = -1 And IsError(Application.Match(Me.Nom, Clé, 0)) Then
        Me.Nom.List = Filter(Clé, Me.Nom.Text, True, vbTextCompare) 'permet de ne plus afficher les noms de la liste
        Me.Nom.DropDown
    End If
    If Me.Nom.Value = "" Then ' si case Nom vide alors le reste se vide aussi
        Me.Prénom.Value = ""
        Me.Chambre.Value = ""
        Fr_Biberons.Visible = False
        Fr_Lait1.Visible = False
        Fr_Lait2.Visible = False
        Fr_Enrichissement.Visible = False
        Fr_Complément.Visible = False
    End If
End Sub

ca coince à

Code:
  If Me.Nom.ListIndex = -1 And IsError(Application.Match(Me.Nom, Clé, 0)) Then

quand j'ai suffisament de patient en BD3 j'ai pas de soucis.
mais si il ne reste qu'un seul patient ( ex en maternité) ou si il n'y en a aucun (ex en HDJ)... alors cela bug.

merci pour ton retour.
 

Pièces jointes

  • les eti en neo 2 Remplissage 20(color).xlsm
    811.7 KB · Affichages: 3

vgendron

XLDnaute Barbatruc
Hello

Je viens de regarder
effectivement, lorsqu'il n'y a qu'1 ou 0 nourrisson, ca bug, parce que:
1) la varialbe clé n'est pas initialisée ==> donc application.match n'a pas ce qu'il lui faut pour fonctionner
2) le nombre de biberons minimum n'est pas non plus initialisé
3) et le combo des biberons n'est pas rempli

tout ca à cause de l'exit sub qui shunte tout le reste de la macro

==> j'ai donc corrigé
1) pour gérer l'absence de nourrisson dans le service (HDJ dans la PJ)
==> un message box prévient ET je desactive le combo Nom pour empecher de saisir la moindre lettre ce qui provoquerait aussi un bug
2) pour gérer la présence d'un SEUL nourrisson dans le service (Maternité dans laPJ)
==> la variable clé doit contenir au moins deux lignes pour que le transpose fonctionne, je force donc une plage de deux lignes (le combo reste rempli avec le seul nom du service)

j'en ai profité aussi pour modifier la macro "SortieNourrisson" pour afficher toutes les lignes de la table BD3
et voila.
 

Pièces jointes

  • les eti en neo 2 Remplissage 21 color.xlsm
    855.4 KB · Affichages: 1

Sirberthoult

XLDnaute Occasionnel
Bonjour,

merci pour ton retour
quand je lis ton code je me dis que c'est evident...pourtant j'ai cherché...j'avais bien identifié le probléme mais je ne travaillé pas au bon endroit.
j'avais egalement ajouté en BD3 1 ligne avec juste "Pédiatrie" "Néonatalogie";..etc
mais ce n'étais pas concluant...

dans ta solution le probléme pour 1 seul nourisson est résolu . c'est cool

par contre, pour 0 patient :
un message apparait, mais ensuite je ne peux plus entrer un nouveau nom à enregistrer dans le service... la combo nom est désactivé. Je pense que tu as du oublier que la combo nom sert aussi à indiquer les nouveaux entrants...

bref j'ai contourné le probléme en ajoutant comme dis plus haut, une ligne pour chaque service en BD3, sans informations... donc nous ne sommes jamais à 0 patients et théoriquement elles ne pourront jamais étre supprimé car pas d'info de date...

est que ma solution est péréne ? qu'en penses tu ?
 

vgendron

XLDnaute Barbatruc
ha oui.. effectivement, j'avais oublié ce point...
j'ai corrigé==> tu peux maintenant resaisir un nouveau nourrisson
==> pas besoin de ta solution de contournement: meme si elle fonctionne, c'est pas forcément une bonne idée puisque on a alors des lignes vides dans une table structurée qui est normalement faite pour éviter les lignes vides justement..
 

Pièces jointes

  • les eti en neo 2 Remplissage 22 color.xlsm
    857.8 KB · Affichages: 5

Sirberthoult

XLDnaute Occasionnel
c nickel !

je corrigerai ca ce soir au boulot.

je ne sais pas de où tu es ... mais si jamais tu n'est pas loin des hauts de france, il faut vraiment que tu passes, je te ferais visiter la biberonerie centrale et rencontrer les biberonieres ! qui seront heureuse de te remercier comme moi !

encore merci.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…