Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Modification avec Cbox en cascade.

pompaero

XLDnaute Impliqué
Bonjour
Je cherche de l'aide désespérément… j'essai de créer un UF pour renseigner et modifier une BDD, j'arrive à effectuer un nouveau enregistrement mais bloque pour la modification.
Je sais pas si mon principe de modification est correcte car il y a 3 Cbox en cascade.
1) j'aimerai quand je souhaite modifier que le nom du formateur s'inscrive lorsque le thème est sélectionné.
2) j'aimerai ensuite pouvoir modifier n'importe quel Cbox ET c'est la que ça coince car je pense que le faite que les Cbox soient en cascade celle-ci s'efface.
Si quelqu'un à une idée pour s'implifier ceci je suis preneur.

Merci à vous par avance

Cordialement
 

Pièces jointes

  • Formation-essai.xlsm
    34.2 KB · Affichages: 33

Dranreb

XLDnaute Barbatruc
Re : Modification avec Cbox en cascade.

J'ai un module de classe ComboBoxLiées si ça vous intéresse.
Il est possible de le stopper pour pouvoir modifier certaines ComboBox.
Mais normalement on ne décide pas au départ si on va créer ou modifier.
On tape déjà de quoi il s'agit et après seulement c'est le bouton de validation qui portera soit "Ajouter" soit "Modifier" selon que ça existe déjà ou pas. Mais comme dit, si dans le tas certaines ComboBox n'ont qu'une vocation d'aide à la recherche au lieu d'être dédiées à des éléments d'identification, il est possible de stopper pour pouvoir modifier sans que ça ne redéclenche une recherche.

Si vous voulez vraiment pouvoir modifier n'importe quelle ComboBox, cela ouvre théoriquement la voie au risque de créer des doublons sur l'ensemble de la combinaison de valeurs qu'ils présentent. Comment comptez vous les distinguer après ? Il faudrait quelque chose d'unique, la date et l'heure de dernière modification par exemple, avec une ComboBox supplémentaire pour pouvoir la choisir.
 
Dernière édition:

pompaero

XLDnaute Impliqué
Re : Modification avec Cbox en cascade.

Bonjour Dranreb

Merci d'être arrêté sur ma demande et de proposer des solutions.
Mon idée avec mes Cbox était de simplifier principalement la recherche c'est pour cela que je suis parti sur cette idée, mais au final je m'aperçois que ce n'est pas si simple que ça.
Ne me rendant pas trop compte du résultat que tu propose, je te donne carte blanche sur le choix, du moment que je puisse "Ajouter et Modifier".
J'ai juste à créer et modifier cette dernière qui restera basique telle qu'elle est.

A te lire
Merci
Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Modification avec Cbox en cascade.

Bonjour.

Bon alors je suis parti sur le principe de pouvoir modifier n'importe quelle ComboBox, et il en faut donc une pour la date d'enregistrement.
Ça implique de devoir d'abord entrer dans la fiche avant de pouvoir Modifier ou Ajouter, pour que l'objet ComboBoxLiées soit bloqué.
Le fait qu'on y entre seulement est signalé par des points de suspension sur le bouton. Pour créer une copie d'une fiche existante, taper n'importe quoi dans Enregistrement avant d'entrer pour que "Modifier…" se transforme d'abord en "Ajouter…".

Attention: je viens de le modifier pour que le bouton Supprimer ne soit utilisable que si on est sur une fiche existante. J'avais oublié ça.
 

Pièces jointes

  • CbxLiéesPompaero.xlsm
    118.4 KB · Affichages: 28
Dernière édition:

pompaero

XLDnaute Impliqué
Re : Modification avec Cbox en cascade.

Bonjour Dranreb

Excuse pour l'attente.
J'ai regardé ta solution, c'est extraordinaire, (une usine à gaz pour moi !! lol) tu est vraiment un professionnel. Du coup cela ma donné des idées et ai bien évolué sur mon projet.
Si je peu me permettre, de profiter encore un peu, afin de finaliser mon projet, j'aimerai sur les feuilles "Visue Livret" et "recap HrCat" avec l'aide du bouton M A J compléter automatiquement les feuilles concernées.
Est ce possible ?
Je joins mon fichier ;
Cordialement
 

Pièces jointes

  • Formation.xlsm
    192.4 KB · Affichages: 26
  • Formation.xlsm
    192.4 KB · Affichages: 28

Dranreb

XLDnaute Barbatruc
Re : Modification avec Cbox en cascade.

Bonjour.

Je reviens tout d'abord sur l'UF_Thème, parce qu'il avait un peu évolué.
La mise en majuscules des contrôles (que j'avais vue après coup) se fait normalement à la frappe des touches plutôt qu'au Change des contrôles. Et l'objet ComboBoxLiées est pourvu d'un évènement KeyPress qui en permet en quelque sorte le tir groupé. Je l'ai mis en œuvre à la place des 3 _Change.

J'ai pensé (à tort ou à raison) que le thème, qui est une vraie phrase, pourrait bénéficier d'une recherche intuitive. J'ai donc ajouté la CL_SujetFltChg qui permet celle ci. Il n'y a qu'a la supprimer s'il ne la faut vraiment pas.

Je me suis aperçu qu'il n'était pas nécessaire d'entrer dans la fiche pour Ajouter, seulement pour Modifier…

Si on fait Annuler les contrôles sont remis dans leur état initial, c'est plus logique.

C'est sûr, les programmations des UserForm ont des styles tout à fait différents. J'aimerais bien que ça se ressemble un peu plus. Peut être pourrait on grouper la mise à jour des mouvements et celle des thèmes dans un seul UserForm. On peut utiliser plusieurs objets ComboBoxLiées de noms différents dans un même UserForm à condition de ne pas confier la gestion d'une ComboBox à deux à fois, actifs en même temps.

En attendant j'équipe le classeur du modules MClassement et du petit module de classe SsGroup. La Function GroupOrg jouera un rôle clé pour l'établissement de récapitulatifs. J'appelle le tout OutIdxPompaero, parce qu'avec tout ça, il est à présent muni d'une bonne moitié des fonctionnalités de mon ancien OutIdx. Mais j'ai un peu hésité, car il est seul à utiliser (jamais vu ça jusqu'ici) plus de 80% des fonctionnalités de l'objet ComboBoxLiées !
 

Pièces jointes

  • OutIdxPompaero.xlsm
    229.8 KB · Affichages: 38

pompaero

XLDnaute Impliqué
Re : Modification avec Cbox en cascade.

Re

Quelle efficacité, je n'en reviens pas du niveau que tu a !!

Sincèrement je suis à la ramasse au niveau des codes .
Je viens d'essayer sur ton fichier, a priori quand j'enregistre un nouveau thème, l'heure de création n'apparait pas (sauf erreur de ma part), si non tes améliorations sont très bien.
Concernant le regroupement des UF, comme tu as l'air de savoir ou tu vas, alors pourquoi pas essayer.

Est ce que le nom du fichier (OutIdxPompaero) pourra être modifier (Formation locale) par la suite ?

Cordialement
 
Dernière modification par un modérateur:

Dranreb

XLDnaute Barbatruc
Re : Modification avec Cbox en cascade.

Très bizarre cette histoire. Au moment où je teste If IsEmpty(VLgn(1, 5)) Then VLgn(1, 5) = VLgn(1, 6) dans la Sub BtnValider_Click, CVLgn(1, 5) contient Null au lieu de Empty comme ça devrait, et ça vient de l'utilisation de Format$ dessus dans la Sub GarnirChamps. Ça semble être un bogue dans VBA. Quoi qu'il en soit, la réécrire comme ça semble éliminer le problème :
VB:
Private Sub GarnirChamps()
If IsEmpty(VLgn(1, 5)) Then
   LabDtHCréat.Caption = "(vide)"
Else
   LabDtHCréat.Caption = Format$(VLgn(1, 5), "dd/mm/yyyy hh:mm")
   End If
End Sub

Oui bien sûr. C'est juste le nom qu'il a chez moi.
 

pompaero

XLDnaute Impliqué
Re : Modification avec Cbox en cascade.

Bien vue !!
je viens de réécrire ton code et cela fonctionne très bien maintenant.

Tu m'étonne de plus en plus (positivement bien sur) dans les constructions de codes.

Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Modification avec Cbox en cascade.

Bonsoir.
Heu, non je n'ai pas dit ça, j'ai seulement dit que c'était peut être possible. Je me suis arrêté de bosser dessus pour l'instant.
Ma dernière idée c'était que tu modernise un peu le code de ton UserForm pour qu'il ressemble un peu plus au mien (moins d'accès aux cellules, utilisation de tableaux en mémoire et utilisation du ListObject). Une Chose minimale serait assez simple à faire au moins dans un premier temps: mettre juste le début de la mise à jour des thèmes dans celle des mouvements mais en enlevant CL.CouleursSympa. Il n'y aurait besoin de rien d'autre pour que l'objet ComboBoxLiées consulte dans son coin la base thèmes chaque fois qu'on change les ComboBox.
Cl.CorrespRequise = True améliorerait un peu les choses, à condition de faire CL.Nettoyer avant de garnir les ComboBox des Valeurs trouvées dans la base mouvements, et de se rappeler que des éléments qui n'existeraient plus dans la base thèmes seraient alors refusés.
 
Dernière édition:

pompaero

XLDnaute Impliqué
Re : Modification avec Cbox en cascade.

Bonjour
Désolé j'ai cru comprendre cela,
Bon c'est pas gagné du tout, déjà que tes codes j'y suis perdu alors je vais essayer de faire quelque chose et déchiffrer tes codes afin de comprendre au mieux,
mais en attendant je poursuis comme j'avais continué car mon responsable de taf aimerai avoir le fichier assez rapidement.
Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Modification avec Cbox en cascade.

Bonjour.
Quelques tuyaux pour ne pas réinventer la poudre. Pour constituer la liste d'Agents sans doublon tu peux utiliser :
VB:
Sub test()
Dim Suj, N&, TLgn&(), TJoin$(), L&
Suj = SujetCBx(Feuil3.ListObjects(1).ListColumns("Agent").DataBodyRange)
MsgBox Join(Suj(0), vbLf)
N = 5 ' (au hasard)
TLgn = Suj(1)(N)
ReDim TJoin(1 To UBound(TLgn))
For L = 1 To UBound(TLgn): TJoin(L) = TLgn(L): Next L
MsgBox Suj(0)(N) & vbLf & Join(TJoin, vbLf)
Préfiltrer Suj(1)(N)
MsgBox "Nombre de dates pour " & Suj(0)(N) & " = " _
   & GroupOrg(Feuil3.ListObjects(1).DataBodyRange, 1).Count
End Sub

Conseil: Pour éviter d'être perdu dans la programmation applicative, toujours bien étudier les commentaires en têtes des procédures de la programmation de service: ils font office d'aide, et il faut me signaler tout point qui resterait obscur.
 
Dernière édition:

Discussions similaires

H
Réponses
19
Affichages
6 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…