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

Dranreb

XLDnaute Barbatruc
On n'a pas d'autre choix que de se rapprocher petit à petit de la configuration où ça ne marche pas
alors dans votre classeur de test, ajoutez un nouveau module de classe, et …
Arrrrgh !!! On ne saura jamais ce qui n'allait pas, alors ?
 

Dranreb

XLDnaute Barbatruc
Pas grave. Ça ne concerne que de l'existant (quand c'est sur fond vert fluo). Ça s'effacera en tapant une lettre qui n'existe pas.
Vous pouvez sélectionner la fin et effacer, ça ça marche, mais tant qu'il peut, il assume ce qu'il à trouvé …
Normalement c'est ce qu'on a quand un patient est défini. Ça ne marche plus quand il y en a désormais plusieurs à avoir des rendez vous ?
Peut être vaudrait il mieux que la ListBox soit toujours le reflet de ce qui est sélectionné. J'hésitais parce que j'aurais aimé que lorsqu'on en tape un nouveau la liste ne s'efface pas. Mais tant pis si ce n'est pas possible …
 
Dernière édition:

SPGoder

XLDnaute Occasionnel
L’idéal pour cette list box, c'est quelle fasse apparaitre les rdv lié au patient sélectionné, et au mois de la date sélectionnée ( ou encore mieux, d'avoir un combobox qui permette de filtrer le mois en cours, comme cela, la saisie de la date est indépendnante de la listebox). Pour que quand la personne qui saisie, puisse tout de suite voir où elle en est . et si pas de date sélectionner, faire un récapitulatif de tout les rdv de la BdD lié au patient.
Si pas de nom inscrit, une listebox vide. Je ne sais pas si j'ai été clair, on si tout du moins si cela est possible
Par contre, L'ID apparait, cela à t il une fonction pour l'utilisateur, ou bien peut elle être masquée?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Ne masquez pas l'ID pour l'instant. Quelque fois les rendez vous ne sont pas affichés, j'ignore pourquoi, et en cliquant dedans ils s'affichent.
Je vais voir si on peut ajouter une ComboBox pour le mois et l'année.
Si on ne sélectionne pas de patient, faut il bien aussi les sortir tous pour le mois ?
 

Dranreb

XLDnaute Barbatruc
J'ai pu ajouter une ComboBox pour le mois.
Il y a un problème, je sais pourquoi mais ne sais pas comment le résoudre: on n'arrive pas à effacer le rendez vous quand il n'y en a qu'un seul pour le patient. Mais ce n'est pas très gênant: on peut toujours taper la date du nouveaiu rendez vous à la place de celui qui est affiché.
 

Pièces jointes

  • CBxLiéesBILBoud.xlsm
    230.7 KB · Affichages: 8

SPGoder

XLDnaute Occasionnel
après différent test: Je me met à la place d'un utilisateur lambda
- on ne peut effacer aucun rdv, ce qui peut être embêtant si on se trompe dans la saisie, par exemple erreur sur le patient, ni même modifier
(en affichant dans les combo box apres saisie dans la list box, )
- il faudrait que l'on puisse afficher le mois voulu directement avec le conbobox mois afin de voir ou on en est pour les rdv du patient (par exemple d'avoir la liste des 12 mois de l'année)
-Dans les combobox des heures, avoir une mise en forme automatique "--h--"
en espérant que ce soit pas trop difficile à réaliser
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Ah oui, j'ai oublié que j'avais ajouté une ComboBox alors CLsR.NbRenseignés vaut 3, plus 2.
De toute façon il vaut mieux tester sur LCouR et LCouP pour les suppressions, et sur la présence d'une date pour la validation du rendez-vous.
Les deux dernières nouvelles procédures :
VB:
Private Sub CBnValider_Click()
   If Not IsEmpty(CLsR.Item(Me.CBxDateRdV).Valeur) Then
      CAsR.ValeursVers TVLR
      If LCouR = 0 Then
         CLsR.ValeursVers TVLR
         CLsR.Lignes.Add.Range.Value = TVLR
         CLsR.Actualiser
      Else: CLsR.Lignes(LCouR).Range.Value = TVLR: End If
   Else
      CAsP.ValeursVers TVLP
      If LCouP = 0 Then
         CLsP.ValeursVers TVLP
         TVLP(1, 1) = WorksheetFunction.Max(CLsP.PlgTablo.Columns(1)) + 1
         CLsP.Lignes.Add.Range.Value = TVLP
         CLsP.Actualiser: InventaireTLgnP
      Else: CLsP.Lignes(LCouP).Range.Value = TVLP: End If
      End If
   End Sub
Private Sub CBnSupprimer_Click()
   If LCouR > 0 Then
      If MsgBox("Êtes-vous sur de vouloir supprimer ce rendez-vous ?", vbYesNo _
         + vbQuestion + vbDefaultButton2, Me.Caption) = vbNo Then Exit Sub
      CLsR.Lignes(LCouR).Delete
      CLsR.Actualiser
   ElseIf LCouP > 0 Then
      If MsgBox("Êtes-vous sur de vouloir supprimer ce patient ?", vbYesNo _
         + vbQuestion + vbDefaultButton2, Me.Caption) = vbNo Then Exit Sub
      CLsP.Lignes(LCouP).Delete
      CLsP.Actualiser: InventaireTLgnP
      End If
   End Sub
Mais peut être vaudrait il mieux faire 2 jeux de boutons Effacer, Valider, Supprimer, un pour le patient et un pour le rendez vous. Comme ça ce serait clair. Qu'est-ce que vous en pensez ?
Mais c'est le cas: si on entre un mois on a les rendez vous du mois, s'il n'y ni date ni ID précisée par ailleurs. Et si on n'arrive pas à effacer ces dernières c'est qu'il n'y a qu'un seul rendez-vous dans le mois.
Les heures ce sont des TextBox, pas des ComboBox pour l'instant. Elles sont affichées hh:mm. Ce serait trop compliqué de reconvertir en heures pour les cellules un texte fabriqué selon un autre format.
 

SPGoder

XLDnaute Occasionnel
Oui, avoir 2 jeu de bouton serait plus clair à l'utilisation, certainement à la programmation
Pour le choix du mois, je n'avais pas compris qu'il proposait que les mois où il y avait des rdv , et que si il y en avait pas de proposé, c'est qu'aucun rdv n'était prévu.
Petit souci pratique: je pense que le combobox mois devrait etre indépendant de la date saisie, mais que l'on puisse choisir le mois afficher voulu. Car lorsque l'on saisie une date pour janvier par exemple, et que la seconde saisie est un autre mois, le champs mois ne s'efface pas, et comme il est relié à la date saisie, cela met la date en fond rouge et on ne peut plus rien valider. Je joins une image, car je n'ai pas du être clair dans l'explication.
"Les heures ce sont des TextBox, pas des ComboBox pour l'instant. Elles sont affichées hh:mm. Ce serait trop compliqué de reconvertir en heures pour les cellules un texte fabriqué selon un autre format. "
Je comprends, mais serait il possible de mettre un message lorsque la personne saisie un mauvais format, ou encore mieux, que la zone soit sur fond rouge tant que le format n'est pas le bon. et aussi, si je tape 10 et que je passe au champs suivant, qu'automatiquement cela saisisse 10:00.(pour un gain de temps lors de la saisie)
J'ai remplacé le code que vous avez envoyé, mais je n'ai pas vu de différence.
je ne sais pas si c'est ce qui a été prévu si on passe à 2 jeux de bouton, mais il faudrait que lorsque l'on saisisse une ligne dans la liste box (par double clic par exemple), ceci remette les informations dans date et heure, afin d'effectuer les modifications qui seront valider avec le bouton modifier. (dans le cas d'une erreur de date ou heure)
Houlala, j'ai l'impression d’être exigent. mais je suis tellement perdu avec les modules et les codes qui y sont associé dans l'userform, que je ne retrouve pas le peu de repère que j'ai. je suis qu'un simple spectateur....
 

Pièces jointes

  • Capture6.PNG
    Capture6.PNG
    17.7 KB · Affichages: 7
Dernière édition:

Dranreb

XLDnaute Barbatruc
Non je ne peux pas rendre la ComboBox mois indépendante du reste. Mais je peux peut être l'effacer quand on s'engage dans une création. Il faut de toute façon que je fasse des ajustements à ce moment là. C'est embêtant qu'on ne puisse pas effacer les zones de rendez vous quand il n'y en a qu'un pour un patient, alors je vais permettre l'effacement de l'ID, mais ça implique de le remettre s'il n'est plus renseigné.
Remarquez, pour les heures, si ça vous arrange mieux, l'objet ControlsAssociés supporte les ComboBox indépendantes (sans vocation de recherche dans la base), alors si vous n'aurez jamais besoin de récupérer les heures pour des calculs, on pourrait mettre des textes prévus dans une liste. Mais pas besoin de mettre la liste dans une feuille si elle peut se fabriquer aisément dans l'UserForm_Initialize. Ce sont des crénaux horaires si je me souvient vaguement ? Peut être qu'une seule colonne suffirait ?
 

Dranreb

XLDnaute Barbatruc
Si on n'a plus besoin de l'heure de fin on pourrait remplacer ce contrôle par le fameux intervenant …
Oui parce que si ce sont des créneaux horaires d'une heure il ont tous une heure de début et une heure de fin, non ?
Et si ça peut ne pas être précis, et bien ma foi faites quand même une table en y mettant ce que vous voulez. Il en faudra quand même une aussi pour les intervenants, à moins qu'il ne faille pouvoir les rechercher aussi parmi les rendez-vous existant.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bon, j'ai assez bossé dessus pour ce matin. Je n'ai pas touché aux contrôles associés des rendez-vous, de toute façon, coté programmation, ce ne sont que des choses à changer dans la UserForm_Initialize.
Par contre j'ai ajouté la sélection d'un rendez vous dans la liste.
Au prochain bogue …
 

Pièces jointes

  • CBxLiéesBILBoud.xlsm
    237.2 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG