la procédure de Dranred , tient compte du nombre d'intitulés Différents de la Colonne Statut dossier (texte) ,il me vient également une question. Le ComboBox de recherche "En attente..." contient actuellement trois valeurs. Normalement, il doit être limité à 5 valeurs, mais doit également proposer 5 valeurs
Et que je supposais qu'il comporterait un onglet Recherche et un autre Fiche spécifiques.Je suis en train de faire le mutlipage, et il me viens une question.
Je crains que non, du moins pas dans tous les cas. Je ne pense pas que ce soit gênant, parce que si on a été obligé de copier les combobox, c'est qu'ils ne contenait rien de cohérent: soit une recherche inaboutie soit une intention de ne pas utiliser son résultat aboutit. Si le basculement vers la fiche a lieu par programme suite à sélection d'une ligne, les ComboBox ne seront ni copiés ni modifiés, la fiche sera simplement garnie selon cette ligne et il n'y aura pas de recherche. Seule une modification de certains champs de la fiche provoquera une recherche. La modification de "En attente…" n'en provoquera notamment pas.Si les combobox de recherche deviennent à leur tour ceux de la fiche (pour modif ou création selon la valeur du bouton final) pourra-t-on quand même écrire une nouvelle valeur, sans que les combobox de recherche ne se mettent à jour ?
Si, parmi les ComboBox, ce champ de la fiche n'est qu'un critère de recherche, et non un élément fondamental d'identification du dossier, ça ne changera pas l'occurrence de celui qui est en cours de mise à jour.Ou plutôt, disons que l'on souhaite ajouter une donnée liées aux combobox de recherche, ce la va créer une nouvelle fiche ou modifier l'existante ?
J'avais pensé copier le List du ComboBox de recherche dans celui de la fiche, une seule fois, juste après exécution de CBL.Actualiser. À ce moment là, il contient la liste sans doublon de toutes les valeurs existantes de la base.Le ComboBox de recherche "En attente..." … des détails auxquels vous avez déjà pensé
Je ne voyait pas vraiment ce que vous vouliez dire, donc j'ai effectivement fait un userform contenant, et les champs de recherche et la fiche. Je suis toujours preneur de votre idée, celle-ci peut être intéressante. Vous pourriez m'en donner un aperçu ?Ne mettez pas des actions sur vos onglets, mais leur nature en tant que support: "Liste" et "Fiche" ou leur vocation générale: "Consultation" et "Mise à jour".
Me.CB_STATUT.List = Array("En attente", "En traitement", "Traité")
Private Sub BT_VALIDER_Click()
With CBL.PlgTablo
If LCou = 0 Then
LCou = .Rows(.Rows.Count): .Rows(LCou).Copy: .Rows(LCou).Insert: LCou = LCou + 1
If L > 0 Then
Me.LBL_NAMEDATE.Caption = "Dossier créé le " & Format(LSrc(1, 13), "dddd d mmmm yyyy") & " par " & LSrc(1, 14) & "," _
& vbLf & IIf(LSrc(1, 15) <> "", "Modifié le " & Format(LSrc(1, 15), "dddd d mmmm yyyy") & " par " & LSrc(1, 16) & ".", "N'a pas été modifié.")
Else
Me.LBL_NAMEDATE.Caption = "Aucun dossier existant n'est isolé."
End If
LSrc(1, 7) = If Me.TB_DEBCT.Value <> "" then CStr(CDate(Me.TB_DEBCT)) else Empty: LSrc(1, 8) = Me.TB_SERVICE
If Me.TB_DEBCT.Value <> "" Then
LSrc(1, 7) = CStr(CDate(Me.TB_DEBCT))
else
Empty: LSrc(1, 8) = Me.TB_SERVICE
End If
Très bien. C'était:Comme j'apprend en même temps, je vous met ce que j'ai tenté pour que vous puissiez me corriger
If Me.TB_DEBCT <> "" Then LSrc(1, 7) = CStr(CDate(Me.TB_DEBCT)) Else LSrc(1, 7) = Empty
LSrc(1, 8) = Me.TB_SERVICE
End With
GarnirChamps LCou
CBL.Actualiser: ModeFiche = False: CBL.Activer
HabiliterContrôles
End Sub
Non. CONTRAT, RAISON, NOMSAL et PRENOM doivent être renseignés déjà rien que pour pouvoir accéder aux autres champs saisissables où la 1ère frappe instaure le mode Fiche en création. AUTRECT et ATTENTE n'ont pas besoin d'être renseignés pour cela puisqu'ils peuvent changer par la suite. Mais on peut rendre ATTENTE obligatoire en plus pour la validation. C'est déjà un peu le cas puisqu'il faut encore qu'au moins un champ saisissable soit renseigné pour pouvoir ajouter, or en mode fiche, ATTENTE a ce statut. Çà se traduit dans la programmation par l'idée que s'il n'y a rien à annuler c'est qu'il n'y a pas non plus matière à modifier ni à créer.Actuellement, j'ai l'impression qu'il faut que toutes les ComboBox de recherche soient renseignées avant d'avoir accès au bouton "Ajouter".
Rem. —— Le bouton Effacer n'est accessible que si au moins un ComboBox de recherche est renseigné.
… ' Et la liste: si elle contient quelque chose.
Rem. —— Les autres contrôles sont accessibles si on est déjà en mode fiche, ou s'il y a exactement une seule ligne dans la liste,
' ou si elle est vide mais que tous les ComboBox obligatoires d'identification du nouveau dossier sont renseignés.
Rem. —— Détection d'un changement apporté, y compris d'abord, mais en mode fiche seulement, dans un ComboBox recherche facultatif.
… ' Il n'y a pas eu changement, donc on ne peut pas utiliser le bouton Annuler.
… ' Il y a eu changement, et le bouton Annuler permettra de rétablir l'état d'origine.
Rem. —— Suite au changement on bascule s'il y a lieu en mode fiche soit en sélectionnant d'office la seule ligne de la liste ce
' qui provoque le basculement, soit en l'effectuant, puis mettant "Recherche figée.", l'ancien texte n'ayant plus de sens.
Rem. —— Les ComboBox obligatoires d'identification sont bloqués en mode fiche.
Rem. —— Le bouton Supprimer n'est utilisable que sur un existant affiché d'origine, où il n'y aurait donc rien à annuler.
Rem. —— Le bouton Valider n'est tout au plus utilisable que sur une fiche modifiée, que le bouton Annuler pourrait rétablir.
Rem. —— Mais ce n'est évidemment pas une condition suffisante.
C'est un peu léger.Le mot clé Empty est utilisé comme un sous-type Variant. Il indique une valeur de variable non initialisée.
Pas d'accord. Je ne veux que des éléments immuables une fois la ligne créée.il faudrait au minimum les combinaisons suivantes pour pouvoir accéder au mode fiche :
CB_CONTRAT (7 caractères mini) + CB_RAISON + CB_ENATTENTE ou
CB_AUTRECT (7 caractères mini) + CB_RAISON + CB_ENATTENTE.
Pas d'accord. Je ne veux que des éléments immuables une fois la ligne créée.
Il n'en reste qu'un et c'est RAISON et non CONTRAT comme je le croyais. ENATTENTE n'en fait partie. D'ailleurs selon l'état de la recherche, toutes les valeurs possibles peuvent ne même pas être proposées. On ne peut à coup sûr le renseigner que dans la fiche.
Donc à partir du moment où l'on renseigne la raison sociale , on aurait accès à la fiche ? Soit en modification si on sélectionne une ligne dans la LB_RESULTAT, soit en création si la LB_RESULTAT ne contient aucune ligne ?Je propose désormais que seul RAISON soit obligatoire pour entrer dans une nouvelle fiche, sachant que si les autres (à part ENATTENTE) sont renseignés, ils ne pourront plus y être modifiés, que ce soit la fiche d'un nouveau dossier ou d'un existant.
Il se peut effectivement que je travail à partir de la base et me serve des informations séparément.Et qu'en est il du NOMSAL et PRENOM ? Vous auriez grandement intérêt, soit dit en passant, ne serait ce que pour économiser un filtrage de Dictionary, à les grouper dans une seule colonne et donc un seul ComboBox, à moins que vous n'ayez besoin à partir de la liste de produire des documents où ils figureront séparés ?
Il peut effectivement y avoir des dossiers avec même CONTRAT, AUTRECT et RAISON, avec des salariés différents.Peut il toujours y avoir plusieurs dossiers avec mêmes CONTRAT, AUTRECT et RAISON mais des salariés différents ?
Et comme je suis ouvert à toutes vos propositions, j'ai modifié l'USF avec des cases à cocher.Si "non" peut être assumé par défaut il est par défaut toujours renseigné ! Vraiment, mettez plutôt une case à cocher au lieu de deux bouton d'options, c'est la façon normale, naturelle et professionnelle d'exprimer toute information à caractère ON/OFF. En outre elle pourrait supporter un troisième état "non défini" apparaissant sous la forme d'une coche grisée.
Un peu de rapidité d'exécution. Votre "quelques secondes" dans un autre message m'a un peu fait tiquer…qu'est ce que l'on gagne à économiser un filtrage de Dictionary ?
Bien. Mais il ne faut pas y mettre "Oui / Non" mais le sens de son état coché: "Dans l'outil" et "Droits validés". On ne met généralement pas de désignation devant les cases à cocher (ni donc au dessus je suppose, puisque vous avez décidé de les mettre au dessus, à moins que vous ne puissiez y mettre autre chose, par exemple "Droits :" et dans la case "Validés").j'ai modifié l'USF avec des cases à cocher.
=SI(I2<>"";I2="oui";"")
Public Sub Stopper()
Dim I As Long
Stoppé = True
For I = 1 To UBound(TCBM)
With TCBM(I): Set .DicCBx = .DicBdD: .CBx.List = .DicCBx.Keys
If FondsÀColorer Then .CBx.BackColor = &H80000005
End With
Next I
End Sub
'
Public Sub Activer()
Dim I As Long
If FondsÀColorer Then For I = 1 To UBound(TCBM): TCBM(I).CBx.BackColor = FondCyan: Next I
Stoppé = False
End Sub
Private Sub CBx_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Assumé Then Parent.CBM_Change Me
End Sub