Formulaire pour gestion clinique de patient et comptabilité

Bonsoir à tous,

je vous ai déjà écrit pour une réalisation de bordereau de remise de chèque automatique. (https://forum.excel-pratique.com/post521396.html#p521396)

Mais en fait avant d'en arriver à cette étape, Je pense qu'il faut que je commence par la premiere étape, à savoir un formulaire (UserForm) en VBA pour saisir des données médicale, et Comptable.

Pour fixer le tableau....: L'idée c'est que je suis médecin généraliste, et je travaille essentiellement en visite à domicile. Nous avons une application smartphone qui "gère" nos appels/ visites/ consultations etc... on pourrait en théorie tout faire sur notre smartphone (y compris compta). Mais le cahier des charges de cette application (dont les données nous sont transmises par un standard téléphonique de régulation) rend l'enregistrement de données dans le téléphone impossible. Tout doit être "enregistré/transmis" via le réseau téléphonique Edge/3G/4G, et rien de doit rester enregistré dans le téléphone... Comme ce sont des données texte, c'est pas très lourd et normalement ça fonctionne... Mais,... quand on se retrouve en pleine cambrousse sans réseau, (de nuit!) et obligé de faire un ou deux km pour transmettre nos données, et cela assez souvent, et bien ça a vite fait d'émousser la confiance que l'on a dans l'application, et de revenir au papier et au crayon...ou du moins d'utiliser l'application au stricte minimum.

Donc l'idée de départ a quelques années déjà. J'avais mis à contribution mon cousin qui travaille dans l'informatique. Mais forcément, pour un projet "prototype" non rémunéré, il y a eu un moment où ça me génait de le mettre à contribution, et il devait en avoir marre de travailler pour du vent.... ce qui peut parfaitement se comprendre.

Cela me permettrait d'avoir un outil perso, et notamment de le laisser disponible à d'éventuels remplaçants.

Comme je fais beaucoup de visite à domicile, l'idée c'était d'avoir un petit ordinateur collé à mon sac de consultation, avec un UserForm qui permettent d'enregistrer données médicales + compta directement dans un fichier Excel, facilement exploitable par la suite.

Et un coup de temps à autres enregistrer ou imprimer la compta pour archive.

donc l'étape 1, c'est la création VBA d'un formulaire de collecte de donnée. Il n'a pas besoin d'etre beau...

Voilà ce que j'ai fait pour le moment, en trainant par-ci par-là sur internet.

capture d ecran 2017 06 16 a 23 35 20 capture d ecran 2017 06 17 a 00 23 33

Mon problème sur les solutions sur internet, c'est que je n'ai pas trouvé de tuto suffisament explicatif. J'aspire à comprendre les lignes de codes un minimum, mais on a l'impression que beaucoup de ceux qui font les tuto ne comprennent pas leur propre code, en disant " et puis vous copiez/collez ce code, à cet endroit...." !

Par exemple Dans :

"Dim J As Long"

ils n'expliquent pas ce que veut dire Dim, pourquoi J et pas une autre lettre de l'alphabet, As : pourquoi ce terme-lien, Long : pourquoi Long... ?

Bref, les tutos d'internet, Si on ne reproduit pas EXACTEMENT le UserForm du Tuto, ça ne fonctionne pas...

pour revenir à ma capture d'écran... :

1) J'aimerais que les Label "Date" et "heure" (respectivement Label1 et Label16), affichent automatiquement la date et l'heure à chaque nouvelle saisie de dossier(c'est à dire pas de rafraichissement de la montre toutes les secondes....)

J'ai trouvé sur votre site, cela pour l'heure...https://forum.excel-pratique.com/excel/heure-et-date-dans-userform-t18102.html, du coup c'est parfait, mais il me manque la date....

2) De plus j'aimerais que lors du click sur "enregistrer" , cela enregistre la date dans la colonne "A", et l'heure dans la Colonne "B". Ça je n'ai pas trouvé comment faire sur internet....

3) Après pour faire simple (ou pas...) :

TextBox 1 = Nom = dans colonne C

TextBox 2 = Prénom = dans colonne D

TextBox 3 = Examen Clinique = dans colonne E

TextBox 4 = Remarques = dans colonne F

TextBox 5 = Numéro de téléphone (ATTENTION, cette TxtBx est à la fin, je l'ai déplacé pour plus de "cohérence", mais dans le fichier excel, la colonne téléphone est bien juste après les "remarques") = dans colonne G

TextBox 6 = Code spécifique de la sécurité sociale pour établir le tarif = dans colonne H

TextBox 7 = à remplir si règlement par chèque = dans colonne I

TextBox 8 = à remplir si règlement par espece = dans colonne J

TextBox 9 = à remplir si règlement par CB = = dans colonne K

TextBox 10 = à remplir si pas de reglement direct, mais tiers payant par la sécurité sociale = dans colonne L

TextBox 11 = à remplir si pas de reglement et Impayé = dans colonne M

TextBox 12 = à remplir si règlement en attente, différé= dans colonne N

TextBox 13 = nom sur le chèque (important pour faire un bordereau automatique et aussi parfois si chèque sans provision, dont le nom est différent de celui du patient... permet donc de retrouver le patient émetteur, son numéro de téléphone et de le rappeler pour savoir si le patient est à nouveau solvable et que l'on peut re-présenter le chèque à la banque) = dans la colonne O

CommandButton1 = Enregistrer = Ajoute une nouvelle ligne de toutes ces données à la suite des autres sur le tableur Excel

CommandButton2= Rechercher = si un peu trop rapide à enregistrer et qu'on a fait une erreur (erreur dans le mode de reglement par exemple) ou un oubli (dans l'examen clinique par exemple), cela doit permettre de faire réapparaitre les les données enregistrées dans tous les textbox (si j'ai bien compris), faire des modification et...

CommandButton 3 = Modifier = ... enregistrer les modifications sur cette fameuse ligne.

CommandButton 4 = Quitter = quitte le UserForm et laisse apparaitre le tableur Excel.

Voilà pour l'essentiel de mes questions, je ne vous demande pas forcément de me faire tout, car vous avez probablement d'autres choses à faire... mais si vous avez des pistes sérieuses qui explique un peu plus comment faire et pas seulement

'ça, ça crée des variables....!

Alors je suis preneurs.

Merci à tous.

nb: L'étape 2 c'est la création d'une macro en plus dans ce fichier pour exporter de la Feuil1 (onglet Compta), vers une Feuil2 (onglet chèque) uniquement les lignes concernant des règlements par chèques pour pouvoir réaliser un bordereau automatique de remise de chèque.

Mais pour cela je retournerai aux solutions proposés à cette adresse. https://forum.excel-pratique.com/post521396.html#p521396

Bonjour,

il y a beaucoup de questions dans cette demande,

je vais commencer par le début, les variables.

Les variables servent à stocker et manipuler des informations dans une macro

DIM

est une instruction vba dite "Déclaration", elle sert à attribuer de l'espace de stockage au nom (variable) de ton choix,

par exemple: nom de variable = i

Dim i As Integer

créer un espace de stockage de type Integer pour la variable nommée i

As

en tant que Type ....

Integer : Données contenant des nombres entiers stockés, de 2 octets, compris entre -32 768 et 32 767

Dim i As Long

créer un espace de stockage de type Long pour la variable nommée i

Long : Nombre entier codé sur 4 octets (32 bits) et dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647

Le type de données doit être défini en fonction de la valeur prise par la variable. Chaque type de donnée utilise un espace mémoire (de 1 octet pour les types de données Byte jusqu'à 22 octets et plus, pour les types de données Variant). Il est donc important de définir le bon type de données pour libérer de l'espace mémoire et ne pas ralentir inutilement le traitement de la macro.

je disais plutôt "...du nom (variable) de ton choix"

mais il faut évitez de nommer les variables en utilisant des mots clés ou instructions réservés par Excel (par exemple Val, Left...).

Le nom des variables doit commencer par un caractère alphabétique et pas excéder 255 caractères. Les noms ne doivent pas contenir de caractères spéciaux. Le caratère underscore _ est accepté. Essayez de donner des noms les plus explicites possibles afin de faciliter la relecture de votre programme.

bonjour

mon conseil perso de moi et qui se discute : pour faire très simple, très fiable, trè sdurable et très mobile, supprimer VBA

donc pas de formulaire de saisie. A quoi ça sert ? mieux vaut saisir dans une ligne de tableau

j'ai des dizaines de tableaux en saisie directe par des dizaines de personnes sur des milliers de lignes.

note : si tu veux faire joli (un formulaire aussi simple que le tien ne sert qu'à faire joli même s'il reste grizou), prendre un SGBD (Access, Windev, OOOBase...)

L'intéret est notamment pour le côté pratique, pour éviter des muavaises manip en effaçant sans le vouloir des plage de cellule, et surtout pour n'avoir que le formulaire en mode visible et pas la feuille de calcul en dessous. Cela a un intérêt CAPITAL en terme de secret professionnel et médical. Ça évite que Monsieur Trucmuche que je vois pour rhinopharyngite sache, en regardant par dessus mon épaule, que sa banquière que j'ai vu juste avant (donc la ligne d'avant du tableau...) est suivie pour Cancer ovarien avec debut de traitement chimiothérapie et effets indésirables associés...

Donc la solution simplissime de remplir le tableau ligne par ligne ne tient pas malheureusement.

Salut,

Comme toi pour j'ai effectué un Userform (pour garder des données confidentielles et faciliter la saisi de "novice" en Excel)

Je te transmet un fichier "simplifié" que j'ai créé pour poser une question sur le site (le vrai fichier contient 26 TextBox mais fonctionne de la même manière) le code devrait t'aider (Il y a juste un problème avec la 1ère ligne lors de la modification donc dans mon vrai fichier je ne l'utilise pas et je l'ai masquée^^). Il n'y a pas de bouton recherche mais des comboBox me permettent de trouver le poste rechercher facilement.

Je suis débutant en VBA donc je peux pas vraiment t'expliquer comment ça marche (j'ai compris les grande ligne mais pas les formules sur les comboBox en cascade (c'est un membre du forum qui m'a donné la formule ^^)).

Hello tout le monde,

J'ai tilté mais j'ai un doute car ce n'est que de la collecte brut avant retraitement dans l'application principale de ce que j'en ait compris, je ne gère que la compta dans de grandes boites, mais ce n'est pas le genre de traitement logiciel qui sera interdit en Janvier 2018 avec l'obligation d'avoir un logiciel de caisse ?

En tout cas si oui les médecins sont concernés par la mesure d'après le BOFIP BOI-TVA-DECLA-30-10-30-20160803 Cette obligation concerne donc également les assujettis dont tout ou partie des opérations réalisées sont exonérées de TVA ou qui relèvent du régime de la franchise en base de TVA.

S'il y'a un comptable de cabinet dans le coin pour donner un avis, sinon il faudrait par prévention demander l'avis de votre expert-comptable. Et si bien interdit, au trait du post sur le papier et le crayon, effectivement, mais pas le crayon à papier car interdit, ni de blanc d'ailleurs pour ne pas altérer et obligation de conservation de plusieurs années.

re

pour masquer des données :

  • enregistrer une macro qui met toute la feuille des données en blanc sur fond blanc (sauf les tires des colonnes)
  • faire jouer la macro à l'ouverture du fichier
  • chez le patient, faire ctrl+F "tout rechercher"
  • mettre la ligne voulue en noir
Rideau !

jamais personne ne verra une ligne "par hasard".

1'562formulaire-test.xlsm (78.36 Ko)
1'562formulaire-test.xlsm (78.36 Ko)

Bonjour à tous et merci pour vos réponses précédentes, alors voilà ce que j'ai réussi à faire concernant le UserForm. ça avance un peu et ça me plait bien, meme si c'est très rudimentaire.

j'ai finalement élaboré le code, par copier/coller de bout de code issu d'ici et là, en essayant de comprendre par les erreurs et bug que ça provoque.. mais c'est pas simple.

Mes Boutons "modifier et supprimer" ne fonctionnent pas, (je ne sais pas pourquoi) ils fonctionnaient sur un autre tuto que j'avais suivi. j'ai l'impression de n'avoir fait qu'augmenter le nombre de TextBox, c'est pour ça que ça me parait bizarre...

Le plus important à mon sens aujourd'hui c'est que les TextBox 7 à 12 (montant en euro), puissent être exporté dans la feuille de calcul au format numérique et non texte. J'ai cherché un peu partout sur internet , j'ai testé pas mal de piste, mais rien ne fonctionne.

.Cells(i + 1, Colonne) = CDbl(Me.Controls("TextBox" & i))

ou

.Cells(i + 1, Colonne) = Val(Replace(Me.Controls("TextBox" & i), ",", "."))

(sur ce meme forum par exemple...)

Peut etre que je ne sais juste pas ou mettre la-dite formule...

je laisse le fichier à votre jugement, et j'apprécierai grandement vos commentaires

Merci à tous.

A bientot

Bonjour à tous,

Après quelques péripéties, un fichier qui ne fonctionne plus du tout, après passage PC->mac, puis retour PC etc... puis des vacances, je me suis remis dans mon projets, en repassant par la case depart (y'avait tellement de bout de code un peu partout que je ne comprenais plus rien....

Aujourd'hui j'ai une version qui est quasiment opérationnel (du point de vue "clinique", et non "comptable")

mais je butte sur une chose... je sens que je touche du doigt mais je ne comprends pas pourquoi ça ne marche pas...

je me réexplique :...

j'ai donc créé un userform en VBA qui me permet de saisir auprès de mes patients des données clinique ET comptable. (c'est le pitch de départ...)

En faisant des tests, il s'est avéré que la "seule" Combobox de mon formulaire qui me permet de récupérer instantanément des données de mon tableau était plutôt limitée... En effet en cas de doublons, fraterie, et d'homonyme, l'Userform prend le premier de la liste et remplissait toute mes autres TextBox avec les informations de ce "premier de la liste d'homonyme"...

Je me suis donc dis "avec une deuxieme comboBox pour le prénom ça serait mieux, plus discriminant..."

Ca me permettrait en effet de taper/choisir le nom dans la CB1, puis de choisir le Prenom dans la CB2, puis de voir instantanément apparaître dans toutes les autres TxtBox les informations du patient choisi (notamment ses antécédents, et traitement, histoire de pas avoir à les re-saisir à chaque fois....)

dans les faits ça ne marche pas comme ça. après recherche de code sur internet, dans tous les sens, j'ai quelques bonnes étapes, mais tout ne fonctionne pas.

  • Je tape le nom du patient (ou je le choisis dans la comboBox1 /ou je tape les premières lettres et je valide)
  • ça me remplit instantanément les textbox de tous les autres champs de text
  • dans la comboBox 2 je choisis le prénom du patient (j'ai reussi au moins ça, isolé les homonymes et ne mettre que leur prénom dans la combobox 2...)
  • ... et ça ne change pas les données des text box, bref ça ne récupère pas les bonne données. et y'a 18 TextBox à récupérer c'est pour dire!!!!

voilà mon bout de code pour essayer de faire tout ça...

Private Sub ComboBox1_Change()

Dim Ligne As Long
valCB1 = Me.ComboBox1.Value
valCB2 = Me.ComboBox2.Value

lr = ThisWorkbook.Sheets("Patients").Cells(Rows.Count, 1).End(xlUp).Row

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Me.ComboBox2.Clear 'pas forcement indispensable, pour effacer le contenue de la Combobox2 avantde charger les éléments triés
Ligne = Me.ComboBox1.ListIndex + 2

For x = 2 To lr 'deuxieme boucle dans la deuxieme Combobox
    If valCB1 = ThisWorkbook.Sheets("Patients").Cells(x, "C") Then
        Me.ComboBox2.AddItem ThisWorkbook.Sheets("Patients").Cells(x, "D") 's'ajoute dans la COmboBox2 les prenoms des doublons
                TextBox3.Value = Cells(Ligne, "E").Value
                TextBox2.Value = Cells(Ligne, "N").Value
                TextBox4.Value = Cells(Ligne, "P").Value
                TextBox5.Value = Cells(Ligne, "Q").Value
                TextBox6.Value = Cells(Ligne, "R").Value
                TextBox7.Value = Cells(Ligne, "S").Value
                TextBox8.Value = Cells(Ligne, "T").Value
                TextBox9.Value = Cells(Ligne, "U").Value
                TextBox10.Value = Cells(Ligne, "F").Value
                TextBox11.Value = Cells(Ligne, "G").Value
                TextBox12.Value = Cells(Ligne, "H").Value
                TextBox13.Value = Cells(Ligne, "I").Value
                TextBox14.Value = Cells(Ligne, "J").Value
                TextBox15.Value = Cells(Ligne, "K").Value
                TextBox16.Value = Cells(Ligne, "L").Value
                TextBox17.Value = Cells(Ligne, "M").Value
                TextBox18.Value = Cells(Ligne, "B").Value
    End If
Next x

Merci à vous pour l'aide que vous pourrez m'apporter.

a bientôt


Bonjour à tous,

Après quelques péripéties, un fichier qui ne fonctionne plus du tout, après passage PC->mac, puis retour PC etc... puis des vacances, je me suis remis dans mon projets, en repassant par la case depart (y'avait tellement de bout de code un peu partout que je ne comprenais plus rien....

Aujourd'hui j'ai une version qui est quasiment opérationnel (du point de vue "clinique", et non "comptable")

mais je butte sur une chose... je sens que je touche du doigt mais je ne comprends pas pourquoi ça ne marche pas...

je me réexplique :...

j'ai donc créé un userform en VBA qui me permet de saisir auprès de mes patients des données clinique ET comptable. (c'est le pitch de départ...)

En faisant des tests, il s'est avéré que la "seule" Combobox de mon formulaire qui me permet de récupérer instantanément des données de mon tableau était plutôt limitée... En effet en cas de doublons, fraterie, et d'homonyme, l'Userform prend le premier de la liste et remplissait toute mes autres TextBox avec les informations de ce "premier de la liste d'homonyme"...

Je me suis donc dis "avec une deuxieme comboBox pour le prénom ça serait mieux, plus discriminant..."

Ca me permettrait en effet de taper/choisir le nom dans la CB1, puis de choisir le Prenom dans la CB2, puis de voir instantanément apparaître dans toutes les autres TxtBox les informations du patient choisi (notamment ses antécédents, et traitement, histoire de pas avoir à les re-saisir à chaque fois....)

dans les faits ça ne marche pas comme ça. après recherche de code sur internet, dans tous les sens, j'ai quelques bonnes étapes, mais tout ne fonctionne pas.

  • Je tape le nom du patient (ou je le choisis dans la comboBox1 /ou je tape les premières lettres et je valide)
  • ça me remplit instantanément les textbox de tous les autres champs de text
  • dans la comboBox 2 je choisis le prénom du patient (j'ai reussi au moins ça, isolé les homonymes et ne mettre que leur prénom dans la combobox 2...)
  • ... et ça ne change pas les données des text box, bref ça ne récupère pas les bonne données. et y'a 18 TextBox à récupérer c'est pour dire!!!!

voilà mon bout de code pour essayer de faire tout ça...

Private Sub ComboBox1_Change()

Dim Ligne As Long
valCB1 = Me.ComboBox1.Value
valCB2 = Me.ComboBox2.Value

lr = ThisWorkbook.Sheets("Patients").Cells(Rows.Count, 1).End(xlUp).Row

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Me.ComboBox2.Clear 'pas forcement indispensable, pour effacer le contenue de la Combobox2 avantde charger les éléments triés
Ligne = Me.ComboBox1.ListIndex + 2

For x = 2 To lr 'deuxieme boucle dans la deuxieme Combobox
    If valCB1 = ThisWorkbook.Sheets("Patients").Cells(x, "C") Then
        Me.ComboBox2.AddItem ThisWorkbook.Sheets("Patients").Cells(x, "D") 's'ajoute dans la COmboBox2 les prenoms des doublons
                TextBox3.Value = Cells(Ligne, "E").Value
                TextBox2.Value = Cells(Ligne, "N").Value
                TextBox4.Value = Cells(Ligne, "P").Value
                TextBox5.Value = Cells(Ligne, "Q").Value
                TextBox6.Value = Cells(Ligne, "R").Value
                TextBox7.Value = Cells(Ligne, "S").Value
                TextBox8.Value = Cells(Ligne, "T").Value
                TextBox9.Value = Cells(Ligne, "U").Value
                TextBox10.Value = Cells(Ligne, "F").Value
                TextBox11.Value = Cells(Ligne, "G").Value
                TextBox12.Value = Cells(Ligne, "H").Value
                TextBox13.Value = Cells(Ligne, "I").Value
                TextBox14.Value = Cells(Ligne, "J").Value
                TextBox15.Value = Cells(Ligne, "K").Value
                TextBox16.Value = Cells(Ligne, "L").Value
                TextBox17.Value = Cells(Ligne, "M").Value
                TextBox18.Value = Cells(Ligne, "B").Value
    End If
Next x

Merci à vous pour l'aide que vous pourrez m'apporter.

a bientôt

546modele-gain.xlsx (168.27 Ko)

Bonjour,

Je suis dans le même cas que toi (médecin dans une structure de PDSA). Je débute en excel...

J'ai demandé à un membre de ma famille de me faire un fichier excel pour faire ma gestion des règlements patients. Ca me permet de faire directement mes entrées sur smartphone après chaque visite.

Je te passe le fichier si jamais cela peut t'aider.

Bonne journée

Bonjour à tous ...

JE reviens vers vous.

Je suis toujours relativement newbie...

Mon application est toujours en voie d'amélioration, mais je l'utilise au travaille et elle me facilite grandement la tache. (Plutot qu'un logiciel médical avec 36000 fonctionnalités que je n'utilise pas, je n'ai que mon appli Excel VBA, ou je consigne Données clinique et comptabilité, et je m'en sers pour exporter des données en publipostage, imprimer des courrier au confrères etc... imprimer des ordonnance de biologie etc...)

Bref ça marche pas mal.

Mais j'ai un soucis qui est en version test,

Idealement au depart, je souhaitais pouvoir retrouver facilement un patient déjà vu, dans la Base de données que constitue l'enregistrement de chaque patient. pour ça sur mon userform "Formulaire", j'avais mis une ComboBox où je tapais les première lettre du nom, et ça me remplissait toutes les textbox concernant ce patient. donc pas besoin de re-saisir prénom, date de naissance, numero de téléphone, antécédents et traitement habituel. ... Dans l'idéal.

En vrai, ça me remplit toute les textbox du premier patient portant ce nom enregistré sur la feuille "Patients". Actuellement j'ai près de 600 ligne sur le tableau que j'utilise tous les jours, donc si je tape DUPONT pour retrouver DUPONT Maryse, mais que j'ai Toute la famille DUPONT,et que j'ai commencé par voir et enregistrer il ya Deux mois DUPONT Jean... et bien j'aurais toutes les données de jean dupont, mais pas celle de maryse.

J'avais essayé de Bidouillé mon code pour mettre une combobox2 avec les prenoms, ça marche il me liste les prenoms, mais il n'importe pas les données... Bref la solution combobox n'est pas adequat pour moi....

Donc je voudrais tester actuellement une solution intermediaire avec un moteur de recherche avec ListBox sur un UserForm intermediaire.

Je tape le nom du patient dans la text box de recherche, et dans la listBox Apparait tous les patients portant le meme nom , avec prenom, date de naissance, telephone, et dernier motif de consultation.

Quand je double clique sur une ligne, ça crée une nouvelle fiche n'important dans le userform de saisie UNIQUEMENT les coordonnée, antécedent et ttt habituel, Nickel ! je peux saisir une nouvelle consultation pour ce patient, et enrgistrer

Mais je ne peux plus "modifier" une ligne deja enregistrer.

Je voudrais mettre un bouton "modifier" dans le moteur de recherche, qui permette d'importer toutes les textBox dasn le userform concernant une consultation précédente, si j'ai des modification à faire (retour de resultat de prise de sang, autre information, changement de mode de paiement (si j'ai mis cheque et que finalement c'est enCB)...) .

Avec la Combobox je peux le faire sur mon fichier actuel, mais sur le fichier que je vous transmets, je ne peux pas le faire, car il pourrait enregistrer une "nouvelle ligne", mais ne peux pas retrouver une "ligen dejà enregistée"

Auriez vous une idée, pour que mon bouton "modifier" puisse fonctionner sans l'usage de Combobox?

Merci beaucoup

Bonjour à tous.

Depuis presque un an, j'utilise la version de mon "application excel" pour gérer mes patients, d'un point de vue clinique et comptable!

J'ai meme reussi à intégrer un "module de prescription" qui fait appel à une base de donnée des médicaments disponible ne France (Base de donnée disponible et mise à jour sur site gouvernemental (http://base-donnees-publique.medicaments.gouv.fr/)

bref, mes diverses macro me permettent de saisir les patients via un UF : Clinique + comptabilité +/- traitement. Une fois tout cela enregistré dans mon classeur excel, j'ai d'autres "boutons" qui me permettent de faire du publipostage vers Word, pour : impression ordonnance dernier patient (en mode direct, ou en mode modification avant impression), impression de courrier à destination d'un spécialiste, des urgences, etc... impression d'ordonnance de bilan biologique ou radiologique....

Vraiment je suis très content de ce que j'utilisais depuis quelques mois, surtout étant parvenu à l'agrémenter de chose essentielle mais non superflue... (un bouton pour imprimer courrier des urgences quand je suis en consultation au lieu d'avoir à réécrire à la main l'integralité de mon examen c'est mieux...!!!)

IL y a des options bien utiles quand je suis en consultation, et d'autre bien utiles quand je suis en visite à domicile. c'etait mon objectif , "avoir un logiciel médical rudimentaire et utilisable au cabinet comme en visite à domicile"

MAIS

depuis qq jours, sans avoir rien demandé, mon publipostage ne fonctionne plus. !!!

Ca fait quasiment un an que je l'utilise, j'ai presque 3700 saisies.

lorsque par exemple je veux imprimer l'ordonnance du dernier patient saisi :

ça ouvre word, puis ça met un pop up:

"Erreur d'execution '5174' :

("C:\Users\...\ordo_ttt\ordo_ttt.docx") "

Je ne bosse en consultation que jeudi , mais si c'est pas grand chose à changer, j'avoue que je vous serai vraiment reconnaissant.

voici le code.

Sub ordo_printchoice()
Dim wrdApp As Object
Dim LigneFin As Long
    LigneFin = Sheets("Patients").Range("A65536").End(xlUp).Row
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True

    wrdApp.Documents.Open (ActiveWorkbook.Path & "\ordo_ttt\ordo_ttt.docx") 'C'est cette ligne là qui semble bugger d'apres le debug
    wrdApp.ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users\xxxchemindemondossier\appli_sos_win_betatest.xlsm" _
        , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\xxxchemindemondossier\appli_sos_win_betatest.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engin" _
        , SQLStatement:="SELECT * FROM `Patients$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    wrdApp.ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
    wrdApp.ActiveDocument.MailMerge.DataSource.ActiveRecord = LigneFin - 1
Set wrdApp = Nothing
End Sub

Le "ActiveWorkbook.Path " a t il changer récemment?

Pour information :

avec le nombre de ligne enregistrée dans mon classeur, mon application se ralentie énormément, ce qui prenait par exemple 10-15 seconde grand max il y a 10 mois pour la séquence [clic "derniere ordo"/ouverture word/publipostage de la dernière ligne saisie sur document type"ordo"/impression sur imprimante habituelle/fermeture de word sans enregistrer.] prend maintenant au moins 45 secondes...

Donc en fait j'avais émis l'idée que , une fois de temps à autre ça serait pas mal de pouvoir exporter toutes mes données saisie vers une base de donnée Access. Mais, en faisant ça je perdais l'utilité de mon outil de recherche de patient (si j'en revois un que j'ai deja vu) afin d'ouvrir un nouvel UF de saisie pré-rempli avec nom+ prénom+ date de naissance + antécédent médicaux + traitement habituels... (dommage_ )

Donc j'ai cherché et trouvé un tuto qui m'aurait permis d'exporter mes saisies de temps à autres dans une BDD Existante. mais ça a foiré...mon interface excel s'est mise en anglais, puis idem pour word, pas moyen de changer la langue d'utilisation (le bouton n'apparaissait pas dans les "options", malgré l'option choisie "langue de l'utilisateur"...). Bref Gros hard Reboot, restauration sur point de restauration antérieur qui ne fonctionne pas... la magie de windows quoi... et finalement j'ai tout réinstallé, ça c'etait il y a environ 3 semaines/ un mois. Donc je pense pas que ça ait un rapport puisque les problemes sont apparus dimanche soir, et que j'ai bossé sans problemes depuis un mois....

Mais j'ai l'impression que récemment, l'interface Excel / Word et compagnie a "changé d'aspect". Mon Ordinateur aurait- il téléchargé une mise à jour pour laquelle les subtilité de VBA ont été légerement modifié.

Dans mes recherche google de moins d'un mois d'ancienneté , rien n'apparait la dessus.

Dois je m'attendre à ce genre de déconvenue à chaque fois qu'Excel évolue?

Comment boquer alors une Màj automatique ?

Voilà

Merci pour votre aide précieuse.

Bonjour,

il faudrait préciser version Office et Windows. Ton profil indique Mac mais...

365 se met à jour avec des évolutions régulièrement, sans parler de celles de W10 qui font des misères.

De là à ce que word t'annonce qu'il ne trouve pas le fichier à tort, il y a un pas que je ne franchirai pas tout de suite.

ActiveWorkbook.Path me gène un peu.

C'est le chemin du classeur actif, qui n'est pas forcément celui de la macro comme j'imagine que tu veux (?)

Donc si tu ne crées pas de classeurs dans des chemins spécifiques et que tu veux celui de la macro remplace ActiveWorkbook.Path par ThisWorkbook.Path

Maintenant le chemin du docx est en relatif par rapport à celui du classeur. N'as-tu pas déplacé l'un ou l'autre ?

Regarde avec l'explorateur de fichier s'ils sont bien là où tu les attends, et avec le nom correctement écrit.

eric

Bonjour,

tout d'abord, mes excuses je n'avais pas répondu il y aqq mois, la modification par ThisWorkbook semble avoir amélioré la chose. donc c'est cool.

Je suis toujours avec ma version qui s'améliore petit a petit, mais toujours en restant rudimentaire (pas de fonctions inutiles, que des fonctions pour gagner du temps!)

Ayant des stagiaires , parfois en autonomie, j'aurais voulu (afin que ces derniers ne se trompent pas dans la facturation) faire un petit userform "pop up" (UF_Caisse) au depart de mon UF de saisie habituel (UserForm1) , qui permettrait de faire toute ma cotation et le mode de reglement sur ce UF_Caisse, et dont le résultat après clic sur le bouton de validation s'afficherait dans les bonnes textbox de mon UserForm1... voyez vous ce que je veux dire ???

(cf la capture d'écran pour illustrer : je vous ai fait une analogie avec un magasin de fringue pour etre plus comprehensible...)

capture d ecran 9

Ayant un petit PC avec ecran tactile, ça fonctionnerait comme la caisse enregistreuse du McDo, ou de H&M...

Voilà ce que je souhaiterais :

Etape 1 - affichage du Codage

En fonction des articles choisis, On clic sur les articles

(ex : Pull Short Bretelle)

et les Articles s'affichent automatiquement dans la TextBox "Codage"

ensuite on ajoute (à la main ) , s'il y a une majoration (IK) le nombre de ces IK...

(la formule au final c'est IK = 0,5Euros, donc 5 IK donnera 2,5 EUros, 15Ik donnera 7,5 Euros en plus de majorations etc...)

Etape 2 - Calcul du prix Total :

En fonction d'une liste d'association d'article ou de chaque item dans la textbox, et de l'ajout ou non de majoration IK, le prix final sera élaboré. (en gros coder qq part que pull= 10euro, Short = 12 Euros, Bretelle = 8 euros ; donc "Pull Short Bretelle + 15 IK" = 10 +12+8+ 7,5 = 37,5 Euros)

J'imagine qu'il doit y avoir un moyen de coder ça qq part, qu'en gros une référence corresponde à un montant... (par chance dans le domaine médical, j'ai des "references qui se repetent tout le temps... en gros j'ai peut etre une petite dizaine "d'association de référence" qui se répetent très souvent, et donc peut etre pas besoin de coder "pull"+"short" +"Bretelle" = 10+12+8= 30, mais de coder directement "Pull Short Bretelle" = 30)

Le total apparait dans la TextBox " Total".

Etape 3 : Calcule des acomptes et restant dû

Une fois le prix total obtenue en fonction des references, je pense que l'etape 3 ne doit pas etre très compliqué...

Le prix final se decompose en 2 parties : un acompte et le restant dû (le reste à payer)

(dans la vraie vie, on ressort pas de chez H&M à credit mais imaginons... )

Attention le calcul de ces "acompte et restant dû" est un peu bizarre, et suit toujours la meme formule ....

EN gros :

  • l'acompte c'est 30% du prix des articles====> S'inscrit dans la TextBox "Acompte"
  • le restant dû c'est les 70% restant du prix des articles, + les 100% de la Majoration IK....====> S'inscrit dans la TextBox 'Restant dû"

Etape 4 : Choix du mode de reglement....

Certes c'est un peu bizarre pour un pull un short et des bretelles de ne pas tout payer directement... (mais dans le domaine medical ça peut marcher comme ça des fois !)

donc si j'ai bien calculé pour faire une analogie, il y a 11 mode de reglement différents

  • integralement par cheque (acompte + restant dû en une seule fois)
  • integralement par espece
  • integralement par CB
  • "Maman passera payer integralement"
  • acompte par cheque + Maman payera le restant dû
  • acompte par espece+ Maman payera le restant dû
  • acompte par CB+ Maman payera le restant dû
  • Acompte en impayé + Maman payera le restant dû
  • Acompte en attente (le client a oublié son porte feuille dans sa voiture, il va le chercher et revient...) + Maman payera le restant dû
  • Intégralité en attente.

Je ne sais pas quelle outils est le plus judicieux... soit choisir une combobox, Soit des bouton radio... Bref en fonction de l'option Choisie, cela doit permettre de diviser ou non le prix et ....

Etape 5 : Validation

... lorsque nous validons, ça transfere :

  • Valeur de la textbox "Codage" dans la TextBox "codage" du UserForm 1
  • le montant dans la bonne Case en fonction de l'option de reglement choisie.
- Si reglement integral par CB, ==> 37,5 dans la Text box CB de UserForm1.

- Si "Maman + Cheque" ====> 10 dans la textbox Chq et 27,5 dans la textbox Maman de UserForm1

- Etc...

-ça Unload UF_Caisse évidemment.

j'ai pas eu le temps de finir...

Donc déjà, les plus avisés d'entre-vous... ça vous parait réalisable?

je cherche pas à me faire macher le boulot, mais surtout vu que j'ai un petit pc pas tres puissant, faut pas que ça ralentisse, encore une fois je cherche à gagner du temps au final, pas attendre que tout se charge....

Après je suis preneur de piste de reflexion.

Bien amicalement

Rechercher des sujets similaires à "formulaire gestion clinique patient comptabilite"