Tableau croisé dynamique peut etre....

SPGoder

XLDnaute Occasionnel
Avant toute chose, bonjour à tous et merci de m'accueillir parmi vous.
Je ne suis pas débutant en excel, mais loin d’être un as, et coté VBA, sniffff....

voici l’idée:
Je renseigne une base de données sous excel, qui contient ID, le nom , le prénom et d’autres informations qui ne nous serviront pas dans la suite.Voici un exemple
ID- Nom - Prénom - adresse
1 - Free - Jean - Paris
2 - Gars - Yves - Pau
3 - Bout - David - Lens


je souhaite récupérer dans une autre feuille, les 3 premiere colonne, pour créer un nouveau tableau qui me servira pour rentrer des rdv.
.......... -1........- 2 .....- 3
.......... -Free - Gars -Bout
.......... -Jean - Yves - Pau
Date1 -"RDV1" -
Date2 - "RDV2" -
Date3 - "RDV3" -

Ma question est comment copier automatiquement une nouvelle entrée dans la base de donnée à la suite des colonnes du tableau de la seconde feuille
J'ai essayer avec les tableaux croisés dynamique, mais je n'y parviens pas
il me reste la solution de dire que la cellule du tableau de la seconde feuille = la cellule de la BdD, mais si je supprime une entrée de la BdD, cela met à mal le tableau, car toute les entrées de rdv ne correspondent plus.

Le fichiers joint est évidement pas terminé, je tâtonne pour tout ce qui est vba, mais j’apprends peu à peu

je vous remercie de l'aide que vous pourrez m'apporter
 

Pièces jointes

  • BdB.xlsm
    60.7 KB · Affichages: 39

SPGoder

XLDnaute Occasionnel
Bonsoir, je travaillais d’après midi, d'où mon retour tardif.
j'ai fais le tour du petit programme, cela m'a l'air pas mal du tout
Coté patient, cela fonctionne très bien
Le fait d'avoir créé les bouton séparément pour la liste et les patient, est une très bonne idée
coté rdv, encore quelques petits points négatif, malheureusement
-exemple, lorsque je saisie le patient BIBBY, cela ne met pas à jour la list, elle reste sur le patient précédent. celà ne le fait pas sur tous....
-Lorsque je sélectionne une entrée dans la liste, et que je veux modifier un rdv, rien ne se passe

Si on n'a plus besoin de l'heure de fin on pourrait remplacer ce contrôle par le fameux intervenant …
L'heure de début et l'heure de fin sont important, car cela doit apparaitre pour la comptabilité et le compte rendu à la famille du patient
par contre, pour simplifié la saisie, une liste prédéfinie, d'horaire allant de 6h00 à 21h, toute les 1/2 heure, conviendrait
Et oui, pour l'intervenant, il faudrait un conbobox supplémentaire avec une liste prédéfini que l'utilisateur pourrait modifié en cas de changement de personnel. Rattacher de la même manière au rdv comme les horaires
 
Dernière édition:

SPGoder

XLDnaute Occasionnel
Bonjour
je viens de testé, et le résultat est pas mal du tout., même très bien.
je pense qu'il y a juste une petite erreur sur le format de l'ID des rdv, il se crée en format date. ce qui empêche la recherche ensuite dans la liste box.
Je viens d'essayer de chercher dans le code, mais rien y fait.... je n'arrive pas à trouver les lignes où vous demander de copier le contenu des combo dans la feuille rendez vous....
Je viens de faire le test de saisir une date de RDV sans patient lié, cela crée une erreur d'execution, mais inscrit quand meme la date dans la feuille rdv. est ce qu'il y a moyen d’empêcher cela? comme le fait d'voir au moins les champs important de rempli avant de valider l'enregistrement?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Le code ne retouche jamais les formats des cellules des tableaux Excel. C'est à vous d'homogénéiser tout ça sur l'intégralité de leurs colonnes.
Toutefois attention: peut être y a t'il une confusion quelque part ? L'ID est passée en colonne 1 chez moi, or celle ci contenait anciennement la date.
C'est fait en 2 fois, par la méthode CLsR.ValeursVers TVLR qui envoie ces valeurs vers ce tableau 2D d'une seule ligne, puis par affectation de celui ci comme valeur de la plage de ligne concernée, qui est généralement la propriété Range d'un ListRow de la collection Lignes du CLsR.
Pas d'erreur chez moi en ayant d'entrée tenté de spécifier une date de rendez vous, ce qu'il ne faut cependant pas faire. Quelle erreur d'exécution, sur quelle ligne de code ?
On peut empêcher ça en ajoutant des conditions dans la Sub CLsR_Change :
VB:
Private Sub CLsR_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   If NbrLgn = 1 Then Exit Sub
   If NbrLgn = 0 Then ReDim TLgnR(0 To 0): LBxRndezVous.Clear: CBxMoisRdV.Text = ""
   LCouR = 0: ReDim TVLR(1 To 1, 1 To CLsR.PlgTablo.Columns.Count): CAsR.ValeursDepuis TVLR
   CBnValiderR.Enabled = LCouP > 0 And Complet And NbrLgn = 0: If CBnValiderR.Enabled Then CBxID.Text = TVLP(1, 1)
   CBnValiderR.Caption = IIf(CBnValiderR.Enabled, "Ajouter", "…"): CBnSupprR.Enabled = False
   End Sub
Pour quelque chose de plus sophistiqué il faudrait écrire une Sub HabiliterContrôle à la fin qui serait exécutée à la fin de presque toutes les autres Sub. Il m'est déjà arrivé de le faire …
 
Dernière édition:

SPGoder

XLDnaute Occasionnel
effectivement, je devais avoir un problème de format sur la colonne ID du tableau patient, j'ai remis le format, et tout remarche.
Je vous joins les capture d’écran quand on ne saisi pas de nom patient, et que l'on rentre une date
Comme vous pouvez le constater, il y a une erreur, mais saisie tout de même la date dans le tableau rdv, ce qui pose des problèmes ensuite car l'enregistrement est lié à aucun ID (c'est pour le cas d'une mauvaise manip de l'utilisateur)
 

Pièces jointes

  • Capture7.PNG
    Capture7.PNG
    54.1 KB · Affichages: 12
  • Capture8.PNG
    Capture8.PNG
    5.4 KB · Affichages: 10
  • Capture9.PNG
    Capture9.PNG
    17.1 KB · Affichages: 9

Dranreb

XLDnaute Barbatruc
Je vois. Ça ne devrait plus arriver si vous supprimez manuellement les lignes de rendez vous qui ne devraient pas y être, avec l'ID non renseignée, puisque les tests que je vous dis de mettre dans la CLsR_Change n'habilitent plus le CBnValiderR s'il n'y a aucun patient isolé, c'est à dire si LCouP = 0.
 
Dernière édition:

SPGoder

XLDnaute Occasionnel
Génial, comme le bouton est grisé tant que les 3 premiers champs ne sont pas saisie, plus d'erreur possible.
Cela fonctionne exactement comme il faut, Vous m'avez été plus qu'un grand secours puisque vous avez tout fait. Un grand merci
Il me restera plus que le tri et la mise forme du tableau à envoyer à la compta. Il faut au moins que je contribue ...
Je vais le montrer à ma femme, pour le test final, mais je sens qu'elle va fortement apprécier la facilité d'utilisation et surtout le gain de temps, car elle fait cela manuellement, par fichier word....
Je vous remercie énormément, je vais essayer d'approfondir ma connaissance en vba, puis ensuite revenir vers cette méthode des modules, et de les comprendre
 

Dranreb

XLDnaute Barbatruc
Non, C'était pour me repérer dans l'écriture des instructions de la Sub Worksheet_Activate. On n'a plus ici de numéros de colonnes enregistrés automatiquement dans des objets ! Mais ça ne gène pas, vous pouvez les mettre en gras mais en gris pâle, et en dehors de la zone
d'impression …
 
Dernière édition:

SPGoder

XLDnaute Occasionnel
ok; c'était plus par curiosité. merci
Par contre, je viens de me rendre compte d'un événement non prévue.
J'étais en train de saisir la BdD patient, et je me suis apperçu que lorsque 2 patients ont le même nom et prénom, dans la zone patient, il n'y a rien qui s'affiche, et nom plus dans l'ID, donc je ne peux pas saisir de rdv.
 

Dranreb

XLDnaute Barbatruc
Et si on ajoutait le numéro de sécurité sociale dans les ComboBox ?
Ou la date de naissance ? Non il vaut mieux le N° SS je crois.
Ce serait facile en principe: il suffirait de mettre une CBxSécu à la place de la TBxSécu et d'en confier la charge à CLsP au lieu de CAsP.
Mais attention, on ne pourra plus le changer en cas d'erreur, il faudrait ajouter un nouveau patient puis supprimer le mauvais.
La ComboBox CBxID ne peut pas être confiée à CLsP: elle est déjà confiée à CLsR. Et si on veut la confier aux deux ça compliquerait tout parce qu'alors ils ne peuvent plus être actifs en même temps.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
S'il vous manque le N°SS à 2 de mêmes nom et prénom, oui ! Perso ça me paraît bien plus improbable que de ne pas avoir la date de naissance ! Mais c'est vous qui voyez. La date de naissance peut être pareille aussi, pas le N°SS.
J'ai peut être mal compris votre question. "(vide)" peut être proposé dans des ComboBox prise en charge par un ComboBoxLiées pour différencier les vides trouvés du cas ou elle n'est pas renseignée, mais ça ne gène pas le fonctionnement.
 
Dernière édition:

SPGoder

XLDnaute Occasionnel
Bonjour
Je disais vide, car non renseigné, si ça ne pose pas de problème, on va prendre le choix du numéro de SS.
Et autres demandes si ce n'est pas trop abusé...Qui sont d'un point de vu pratique pour gagner du temps à la saisie
- serait il possible de scroller avec la roulette de la souris sur les combobox box?
- Actuellement, lorsque l'on vient de d’ajouter un rdv, les combo date, heure de début, heure de fin et intervenant restent afficher, et si on choisi une nouvelle date, les combo s'effacent. Serait il possible que lorsque l'on change de date, pour saisir un nouveau rdv, que les combo heure de debut, heure de fin et intervenant affiche la dernière saisie (ne se réinitialise pas). Car souvent, un patient à plusieurs RdV dans le mois, avec les mêmes horaires et intervenant.
- Lorsque je saisi un RDV, pour un patient X, la première date du rdv du mois (différent du mois en cours, ce qui est souvent le cas) , lors du choix dans le calendrier, celui ci s'affiche à la date du jour, on choisi le mois, puis le jour, et cela renseigne le combo date. Si pour le même patient, on sélectionne de nouveau une date, le calendrier apparait au mois de la date de la saisie précédente, ce qui est impeccable pour gagner du temps . si on saisie une date supplémentaire pour le même patient, le calendrier s'ouvre à la date du jour. Est ce normal? N'y a t il pas moyen que cela fasse comme lors de la 2 ieme saisie, d'avoir le calendrier sur le mois de la dernière saisie?
- Dans la listebox, est ce que le classement pourrait se faire par ordre chronologique, et non par ordre de saisie.

J’espère avoir été assez explicite
Le programme fonctionne vraiment bien, les demandes ne sont que pour une optimisation de son utilisation.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2