Gestion de dossiers - Base données

goldenboy

XLDnaute Occasionnel
Bonjour à tous,

Je viens vous solliciter sur mon projet de gestion de dossier.

J'ai créé mes USF, je suis capable d'ajouter des données, mais je bloque sur la recherche, et je pense qu'ensuite je bloquerais sur la modification.

Chaque chose en son temps, je viens d'abord vous demander un coup de main sur la recherche.

Voici un fichier avec des explications de fonctionnement et de résultats attendus sur la feuille MODE D'EMPLOI.

Merci d'avance à tous ceux qui participerons et m'aiderons dans cette réalisation. :D
 

Pièces jointes

  • Test gestion dossier.xlsm
    82.9 KB · Affichages: 216
  • Test gestion dossier.xlsm
    82.9 KB · Affichages: 222
  • Test gestion dossier.xlsm
    82.9 KB · Affichages: 226
Dernière édition:

goldenboy

XLDnaute Occasionnel
Re : Gestion de dossier [Recherche multi critère]

Bonjour Dranreb,

Avez vous encore besoin d'un coup de main pour finir la programmation ?
Ho que oui, mais on a le temps pour faire les choses bien.

J'ai présenté un aperçu à ma hiérarchie cette après midi. Ils sont emballés.
D'autant plus que notre fichier actuel était en plein plantage aujourd'hui.
il est en mode partagé, et je pense qu'il conserve tout l'historique des changements. Le fichier, qui d'ordinaire fait 2 Mo, en faisait 162 Mo. Donc gros plantage à l'ouverture et capacité de nos serveurs insuffisante...

Bref, j'en ai profité pour montrer un aperçu de ce que l'on prépare ensemble actuellement.

ça vaudrait presque le coup de les mettre quand même ensemble quitte à utiliser un séparateur "|" entre le nom et le prénom
Après vérification, je suis ok pour mettre qu'une seule colonne pour le nom et prénom. C'est actuellement le cas, et même si je dois me servir des données, ce ne sera que pour des courriers, pour lesquels le nom et le prénom sont sur une même ligne.

Par contre, je ne suis pas sur de pouvoir tout reprogrammer en enlevant une colonne et un combobox. Je pense que beaucoup de choses doivent changer...

Si vous voulez bien me proposer le fichier modifié, je suis preneur.

Je suis aussi d'accord pour que vous y intégriez les checkbox telles que vous les voyez.
De cette forme là, cela me parait plutôt évident : le sens de son état coché: "Dans l'outil" et "Droits validés".
Moi j'avais laissé les titres des anciens OptionButton, parce que je pensais que selon l'état de la checkbox, son caption serait modifié.

J'ai encore pas mal de chose à vous demander, mais je suis patient et je sais que petit à petit, l'oiseau fait son nid. :)
 

Dranreb

XLDnaute Barbatruc
Re : Gestion de dossiers - Base données

Bonsoir.
Par contre, je ne suis pas sûr de pouvoir tout reprogrammer en enlevant une colonne et un combobox. Je pense que beaucoup de choses doivent changer...
Oui mais ce n'est pas compliqué: Enlever le CBL.Add Me.CB_PRENOM, "E" et Passé à "E" la colonne spécifiée au suivant. Le plus gros: diminuer d'1 tous les numéros de colonnes au delà de 5 dans les expressions de la forme LSrc(1, x) où x représente ce numéro de colonne. Dans LB_RESULTAT_Click, affecter à Me.CB_ATTENTE T(1, 5) au lieu de T(1, 6). Quand à CBL_Résultat, ce serait l'occasion de vous l'écrire comme vous la voulez, je me suis contenté d'une boucle qui envoie les 8 1ères colonnes dans la liste, or je croyais que vous vouliez certaines colonnes bien précises dans un certain ordre. Pour vous y retrouver d'après la liste en réduisant la fenêtre VB, pouvez mettre temporairement dans Excel le style d'affichage en références L1C1 pour avoir les numéros de colonnes en entête.
Si vous voulez bien me proposer le fichier modifié, je suis preneur.
Vous ne m'avez toujours pas donné votre accord pour transformer les "oui" en VRAI et "non" en FAUX. Ni confirmé si vous tenez à enlever toute sécurité sur les ComboBox dans la fiche.
 

goldenboy

XLDnaute Occasionnel
Re : Gestion de dossiers - Base données

Bonsoir,

Je m’attelle à changer la programmation suite à la colonne prénom qui disparaît, et je met en forme ma LB_RESULTAT.
Ce sera un bon exercice et puis un bon moyen de me familiariser avec ce code.

Je reviens vers vous dès que j'ai fini et je vous dit pour la sécurité des combobox dans la fiche.

Pour le vrai faux, si vous trouvez cela plus simple, on peut le faire.

a+, avec le fichier reprogrammé.
 

goldenboy

XLDnaute Occasionnel
Re : Gestion de dossiers - Base données

Me revoilà !!!

Voici le fichier reprogrammé.

J'ai ajouté les procédures que vous indiquez dans le poste #45
J'ai configuré la LB_RESULTAT, me manque juste à remplir la ligne de titre. Je n'y suis pas arrivé. :(

Je bloque sur les checkbox. J'ai voulu tenter mais je suis pas vraiment sur d'avoir compris ce que vous aviez écrit à l'origine pour les optionbutton. a part dans la commande VALIDER click.
Par exemple :
Code:
LSrc(1, 8) = IIf(Me.OBOUI_OUTIL Or Me.OBNON_OUTIL, IIf(Me.OBOUI_OUTIL, "oui", "non"), Empty)
Veut dire : ligne source, colonne 8 égale quelque chose si bt oui ou bt non sont activés, et si c'est bouton oui alors la valeur de la cellule sera oui, sinon se sera non. Le empty, prend la relais quand aucun des deux optionbutton n'est activé.

Du coup, avec la ChBox_OUTIL, le code serait peut-être :
Code:
LSrc(1,8)=IIf(me.ChBox_OUTIL.value = true, "VRAI", "FAUX")
Du coup je viens de tester et ça à l'air de fonctionner.

J'ai presque tout réussi, sauf Private Sub GarnirChamps(ByVal L As Long): Récursif = True.

J'ai viens de remarquer un problème de date. Il indique le 5 mars 2013 au lieu du 3 mai 2013.
Et j'ai l'impression que je peux tout le temps cliquer sur modifier. Ce qui passe d'un format de date à un autre sur une même fiche.
Peut qu'après avoir corrigé mes bêtises avec ces checkbox, tout reviendra dans l'ordre.

Je suis bloqué pour vous envoyer le fichier. Il fait 359 ko. Je ne sais pas comment faire pour vous l'envoyer.
Ps, j'ai réussi et j'ai appris que winrar faisait aussi .ZIP !!!
 

Pièces jointes

  • Gestion-dossier 030513.zip
    129.6 KB · Affichages: 85
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Gestion de dossiers - Base données

Pour le vrai faux, si vous trouvez cela plus simple, on peut le faire.
Dissipez tout de suite ce scepticisme, voulez vous ? je ne "trouve" pas ça plus simple: ça l'est seulement réellement.
D'abord ce n'est pas "vrai"/"faux" comme vous semblez le croire (ça ce seraient des textes), c'est VRAI/FAUX, ça ne peut pas se mettre en minuscule, ça correspond directement aux valeur True/False de VBA, et par conséquent aussi aux valeurs de CheckBox.

P.S. Je viens seulement de voir votre votre nouveau message … qui illustre parfaitement ce que je disais ! Vous voyez maintenant la gymnastique incompréhensible à laquelle oblige le "oui"/"non" aussi bien en entrée qu'en sortie !!
LSrc(1,8)=IIf(me.ChBox_OUTIL.value = true, "VRAI", "FAUX")
Non, ça devient tout simplement :
VB:
LSrc(1, 8) = Me.ChBox_OUTIL.Value

Je sais, ces anglo n'ont pas pris la peine d'éviter un bug sur les dates françaises. C'est pourquoi il faut les ranger converties en chaînes avec CStr dans des tableaux destinés à des cellules. Je réalise que l'oubli vient de moi pour la date de création: même quand elle n'est pas modifiée il faut reconvertir en String, dans le tableau, la valeur Date qui s'y trouve pour éviter le bug Excel.

J'ouvrirai votre fichier demain. Bonne nuit.
 
Dernière édition:

goldenboy

XLDnaute Occasionnel
Re : Gestion de dossiers - Base données

Bonjour Dranreb,

Je crois avoir bien saisi le truc des checkbox.

Voici le fichier modifié ce matin après en avoir rêvé toute la nuit :)

Il reste encre un petit problème quand même sur les ces ChBox, dans cette partie je pense :


VB:
Private Sub GarnirChamps(ByVal L As Long): Récursif = True
If L > 0 Then LSrc = CBL.PlgTablo.Rows(L).Resize(, 17).Value Else ReDim LSrc(1 To 1, 1 To 17)
If ModeFiche Then Me.CB_AUTRECT = LSrc(1, 2): Me.CB_ATTENTE = LSrc(1, 5)
Me.TB_DEBCT = LSrc(1, 6): Me.TB_SERVICE = LSrc(1, 7)
Me.ChBox_OUTIL.Value = IIf(LSrc(1, 8) = "", False, LSrc(1, 8)) ': Me.OBNON_OUTIL = LSrc(1, 8) = "non" ' Même si ça peut être ni oui ni non il vaudrait mieux une ChekBox à 3 états
Me.ChBox_DROITS.Value = IIf(LSrc(1, 9) = "", False, LSrc(1, 9)) ': Me.OBNON_DROITS = LSrc(1, 9) = "non" ' idem
Me.TB_MONTANT1 = LSrc(1, 10): Me.TB_MONTANT2 = LSrc(1, 11)
Me.CB_STATUT = LSrc(1, 16): Me.TB_COM = LSrc(1, 17)
If L > 0 Then
   Me.LBL_NAMEDATE.Caption = "Dossier créé le " & Format(LSrc(1, 12), "dddd d mmmm yyyy") & " par " & LSrc(1, 13) & "," _
      & vbLf & "Modifié le " & Format(LSrc(1, 14), "dddd d mmmm yyyy") & " par " & LSrc(1, 15) & "."
Else
   Me.LBL_NAMEDATE.Caption = "Aucun dossier existant n'est isolé."
End If
Fin: Récursif = False: End Sub


Bon Samedi à vous.
 

Pièces jointes

  • Gestion-dossier 040513.zip
    131 KB · Affichages: 47

Dranreb

XLDnaute Barbatruc
Re : Gestion de dossiers - Base données

Bonjour.
S'il faut que les CheckBox soient assumés à False même si on n'a pas vérifié que les droits ne sont pas validés, oui. Mais dans ce cas autant mettre FAUX dans la liste partout où ce n'est pas VRAI, et pour les nouvelles lignes, initialiser les valeurs de cellules à False derrière les ReDim LSrc(1 To 1, 1 To 17). Alors ce sont de simples affectations, et pour la détection du changement un Xor. Sinon la valeur Empty d'une cellule vide ou d'un Variant non initialisé est acceptée mais convertie en Null, qui est la valeur d'une case à cocher à l'état non décidé. La détection du changement tenant compte de l'état non décidé est la suivante:
VB:
If IsNull(Me.ChBox_OUTIL.Value) Xor IsEmpty(LSrc(1, 8)) Then GoTo ÇaAChangé _
   Else If Me.ChBox_OUTIL.Value Xor LSrc(1, 8) Then GoTo ÇaAChangé
If IsNull(Me.ChBox_DROITS.Value) Xor IsEmpty(LSrc(1, 9)) Then GoTo ÇaAChangé _
   Else If Me.ChBox_DROITS.Value Xor LSrc(1, 9) Then GoTo ÇaAChangé

Pour éviter le bug sur la date de création non modifiée, je pense qu'il faut mettre dans BT_VALIDER_Click :
VB:
   If Not IsDate(LSrc(1, 12)) Then LSrc(1, 12) = LSrc(1, 14) Else LSrc(1, 12) = CStr(LSrc(1, 12))
 
Dernière édition:

goldenboy

XLDnaute Occasionnel
Re : Gestion de dossiers - Base données

Bonjour, je ne sais pas si vous avez testé, mais j'ai l'impression que ça ne fonctionne pas.

Le premier code concernant les checkbox, empêche la saisie dans les combobox de recherche, sauf ENATTENTE, et la liste ne vient pas.

Le second code concernant la date, permet de cliquer sur modifier plusieurs fois d'affilé et fait changer la date de création. un coup 04/05/13, un coup 05/04/13.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Gestion de dossiers - Base données

Ça marche dans la 030513.xls
Là ça ne marche plus parce que vous mettez False quand ça devrait rester Null de sorte qu'il va tout de suite dans la fiche parce qu'il détecte tout de suite un changement. Je vous ai dit: de simples affectations et rien d'autre. Si ça ne devait jamais être indéfini (mais pourquoi ?), il faut agir ailleurs parce que LSrc(1, 8) doit alors être False dès le départ.
Dans la HabiliterContrôles mettez peut être quelque part :
VB:
Me.ChBox_OUTIL.Caption = Replace(Me.ChBox_OUTIL.Caption, " ?", "") & IIf(IsNull(Me.ChBox_OUTIL.Value), " ?", "")
Me.ChBox_DROITS.Caption = Replace(Me.ChBox_DROITS.Caption, " ?", "") & IIf(IsNull(Me.ChBox_DROITS.Value), " ?", "")
Une fois clairement cochée ou décochée, ce n'est plus une question mais une réponse.
Remarque: si, du fait que les états ne sauraient en aucun cas redevenir indéterminés, vous n'envisagez sûrement pas de mettre la propriété TripleState des CheckBox à True, il serait peut être plus clair d'écrire la vérification de changement comme ceci :
VB:
If VarType(Me.ChBox_OUTIL.Value) = vbBoolean Then
   If VarType(LSrc(1, 8)) <> vbBoolean Then GoTo ÇaAChangé
   If Me.ChBox_OUTIL.Value Xor LSrc(1, 8) Then GoTo ÇaAChangé
   End If
If VarType(Me.ChBox_DROITS.Value) = vbBoolean Then
   If VarType(LSrc(1, 9)) <> vbBoolean Then GoTo ÇaAChangé
   If Me.ChBox_DROITS.Value Xor LSrc(1, 9) Then GoTo ÇaAChangé
   End If
Répondu en édit au #52 pour le problème de la date de création.

J'ai remis un peu d'ordre dans la programmation (la mienne surtout). Du moins je l'espère. Il m'est venu une idée pour concilier les impératifs de sécurité avec d'éventuelles modifications exceptionnelles normalement interdites: un double clic sur le label LabDiagno permet d'annuler cette sécurité. Il faut déjà finir par le savoir un beau jour, n'est ce pas …

J'effectue pas mal d'autres modifications, je joindrai tout ça plus tard et non dans ce message. Aussi n'écrivez rien d'autre que les vérifications supplémentaires à effectuer tout à la fin au With Me.BT_VALIDER du style :
VB:
If Ceci And Cela Then .Enabled = False: Me.LBL_ERREUR = "Ça va pas du tout": Exit Sub
Je n'ai écrit que ceux d'impératifs techniques.

Je m'aperçois qu'on ne peut pas se passer d'un bouton supplémentaire en haut à gauche pour basculer du mode recherche au mode fiche, et vice versa, dans quelques cas où cela ne peut pas s'opérer automatiquement.

Pour pouvoir mieux tester de mon coté, je serais intéressé par un jeu de donnée sans davantage de lignes mais mieux représentatif d'un maximum de cas de figures différents pouvant réellement se présenter: ce qui peut être renseigné ou pas avec autre chose, même raison avec plusieurs noms, etc. Avec si possible en colonne Q des scénarios à tester de changements et d'ajouts de nouvelles lignes avec quels éléments communs avec elle.

Faut-il que j'écrive la suppression où que j'enlève le bouton ?
 

Pièces jointes

  • Gestion-dossier 040513.xls
    348.5 KB · Affichages: 77
Dernière édition:

goldenboy

XLDnaute Occasionnel
Re : Gestion de dossiers - Base données

Bonjour Dranreb,

Si ça ne devait jamais être indéfini (mais pourquoi ?), il faut agir ailleurs parce que LSrc(1, 8) doit alors être False dès le départ.
J'ai dit une bêtise. Si nous ne savons pas quel salarié est concerné par un règlement, nous ne pouvons pas savoir si ces droits sont validés ou s'il est dans l'outil. Il y a donc bien la possibilité que ces deux checkboxs soient indéfinies.

Aussi, la checkbox droits validés ne doit être accessible que si un numéro de contrat santé est indiqué. (CB_CONTRAT) En effet, nous ne validons pas de droits sur les contrats prévoyance. (CB_AUTRECT)
Elle ne doit pas non plus être accessible si la checkbox "Non gestionnaire de soins" est true. En effet, nous ne sommes pas toujours le gestionnaire de soins et donc ne validons pas les droits.

J'ai donc rajouté une colonne et modifié le code en conséquence.

J'ai essayé d’écrire des vérifications supplémentaires, mais j'y arrive pas vraiment.
Pour le moment j'ai mis deux vérifs sur la longueur minimale des numéros de contrat.
J'ai également bloqué les cb contrat et autrect à 13 caractères max et service à 4 caractères min et max.

Faut-il que j'écrive la suppression où que j'enlève le bouton ?
Je ne souhaite pas donner la possibilité d'effacer des fiches. Je préfère qu'elles soient mise en statut "Complet".
Elle seront ensuite supprimées par un nettoyage du fichier.
Me.CB_STATUT.List = Array("Incomplet", "En traitement", "Complet") Voici trois choix commençant tous par une lettre différente.

Je m'aperçois qu'on ne peut pas se passer d'un bouton supplémentaire en haut à gauche pour basculer du mode recherche au mode fiche, et vice versa, dans quelques cas où cela ne peut pas s'opérer automatiquement.
Possible. Je vous avoue que j'ai du mal à tester moi même ce qui fonctionne ou fonctionne pas. Actuellement, j'ai les yeux rivés sur les dates de modif et création qui changent encore tout le temps ou qui se mettent à l'envers.

Pour pouvoir mieux tester de mon coté, je serais intéressé par un jeu de donnée sans davantage de lignes mais mieux représentatif d'un maximum de cas de figures différents pouvant réellement se présenter: ce qui peut être renseigné ou pas avec autre chose, même raison avec plusieurs noms, etc. Avec si possible en colonne Q des scénarios à tester de changements et d'ajouts de nouvelles lignes avec quels éléments communs avec elle.
J'ai mis sur la feuille 2, un exemple pour une société avec plusieurs salarié et des événements pour modification ou ajout.

Vous pourrez voir également qu'il faut absolument les 5 premières lignes de la feuille 1 pour pouvoir travailler.

voici le fichier.
 

Pièces jointes

  • Gestion-dossier 070513.zip
    134.9 KB · Affichages: 54

Dranreb

XLDnaute Barbatruc
Re : Gestion de dossiers - Base données

Bonjour
Oh là ! Évitez les informations logiques à significations négatives (on a vite fait de faire le contraire du contraire de ce qu'il ne faut pas faire !). Plutôt: "Soins gérés par nous"
Je ne comprend pas grand chose aux scénarios, mais je commence vaguement à me demander si c'est bien comme je l'ai toujours cru jusqu'à présent une liste de documents ou pas plutôt une liste d'historique de différents états successifs de mêmes documents. Je ne comprends pas par exemple que vous créez une nouvelle ligne lorsque vous ne savez pas quel salarié est concerné, puisqu'une fois qu'il sera connu ça pourrait correspondre à un dossier existant. Surtout si vous n'avez pas prévu d'en supprimer. Mais il faut certes pouvoir noter les situations. Va-t-il falloir prévoir un système de fiche temporaire à reverser dans la bonne ultérieurement ?…

Je ne comprend pas. Chez moi la date de création ne change plus grâce au Else LSrc(1, 13) = CStr(LSrc(1, 13))
ajouté derrière If Not IsDate(LSrc(1, 13)) Then LSrc(1, 13) = LSrc(1, 15) Else etc… ci dessus.

Je vais reporter les modifications que j'ai faites dans le 040513.xls sur votre classeur que je vais peut être enregistrer sans date dans le nom, car j'en ai marre de conserver plusieurs versions du fichier.

Certaines vérifications devront se faire avant d'entrer en fiche.
 

goldenboy

XLDnaute Occasionnel
Re : Gestion de dossiers - Base données

Bonsoir Dranreb,

On ne signifie jamais que nous sommes le gestionnaire de soins. C'est majoritairement le cas. Ne pas être gestionnaire est une particularité à souligner et à faire ressortir.

Je vous met ci joint un aperçu de ce qu'est notre fichier actuel. Je n'ai gardé que les raisons sociales qui commencent par la lettre A et je l'ai déconfidentialisé. :confused: on va dire que ça se dit.
peut-être que cela vous aidera à mieux comprendre notre système.

Je ne comprends pas par exemple que vous créez une nouvelle ligne lorsque vous ne savez pas quel salarié est concerné, puisqu'une fois qu'il sera connu ça pourrait correspondre à un dossier existant.
Vous avez raison.
Mais dans la réalité, nous ne pouvons pas ranger cette information de règlement avec les autres dossiers (dans l’armoire). Les autres dossiers sont classés en attente règlement, et celui ci devra-être classé en attente bulletin ou en attente mail selon ce que nous allons demander.

Note à part : on gagnerai notre temps à classer nos dossiers par raisons sociales plutôt que par objet de demande.

Pour les dates, j'ai bien le code que vous m'indiquez, mais voilà ce qui se passe :
Si je prend une fiche existante sans date, et que je la modifie, les deux dates (création et modification) sont à l'envers : 5 juillet 2013.
Si je remodifie cette fiche, la date création devient 7 mai 2013 et la date modification reste 5 juillet 2013 avec le changement d'heure qui se fait bien sur la date de modification.
Si je remodifie encore, la date création devient 5 juillet 2013 etc...

J'ai peut être un mauvais paramètre, mais si j'écris =maintenant() ou = aujourdhui() dans une cellule, j'obtient bien le 7 mai 2013.

Je veux bien que vous renommiez le fichier sans date. C'était seulement pour s'y retrouver et revenir en arrière en cas de plantage.
 

Pièces jointes

  • Gestion des dossiers ANI.zip
    64.9 KB · Affichages: 71

Dranreb

XLDnaute Barbatruc
Re : Gestion de dossiers - Base données

Le bug est apparemment plus coriace en Excel 2007 qu'en Excel 2003 !
Essayez en remplaçant dans les affectations à LSrc(1, x) les CSrt(UneDate) par Format(UneDate, "d mmm yyyy hh:mm:ss")
Il n'y en a que 2 dans BT_VALIDER_Click :
VB:
   LSrc(1, 14) = Format(Now, "d mmm yyyy hh:mm:ss"): LSrc(1, 15) = Application.UserName
   If Not IsDate(LSrc(1, 12)) Then LSrc(1, 12) = LSrc(1, 14) Else LSrc(1, 12) = Format(LSrc(1, 12), "d mmm yyyy hh:mm:ss")
Ça me choque vraiment une désignation de Checbox commançant par "Non". Transformez la en quelque chose au sens positif, "Gestion externe des soins" par exemple.

Voilà.
J'ai appliqué quelque restructurations que j'avais préparées.
Certain contrôles sont à mettre ailleurs: Ceux des ComboBox avant l'entrée en fiche qu'ils peuvent interdire
Toujours éviter d'office certaine erreurs si on peut (cohérence CheckBox entre eux assumée), ou sinon les signaler le plus tôt possible. j'ai reporté des évènement Change en KeyPress pour ne pas fausser l'affectation de valeurs existantes et de nouveau provoquer et détecter un changement tout de suite ! Le nom à été sophistiqué pour permettre de taper d'office le nom en capitales mais pas le prénom. Un blanc souligné y est transformé en espace insécable comme dans LE_CORBUSIER
 

Pièces jointes

  • Gestion-dossiers.xls
    382.5 KB · Affichages: 191
  • Gestion-dossiers.xls
    382.5 KB · Affichages: 190
  • Gestion-dossiers.xls
    382.5 KB · Affichages: 194
Dernière édition:

Discussions similaires

Réponses
2
Affichages
389
Réponses
3
Affichages
198
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 505
Messages
2 089 067
Membres
104 016
dernier inscrit
Mokson