Dictionary multicolonne

ya_v_ka

XLDnaute Impliqué
Bonjour le forum,

J'essaye de m'améliorer et d'utiliser le "dictionary" pour la création de combobox dynamiques, mais je rame...

Dans le fichier joint on peut voir que tout fonctionne jusque là (Appel par double-clic pour les défectuosités), mais il me faut impérativement identifier l'objet par son numéro car je peux avoir plusieurs objets appelés pareils, mais appartenant à des composants différents...

J'ai mis le combobox2 sur 2 colonnes, la première pour le nom de l'objet (ça marche) et la seconde pour son numéro que je vais masquer ensuite... mais je n'arrive pas à la renseigner en passant par le dictionary !!!

Et en passant je pense que la déclaration de mes variables pour le dictionary doivent êtres fausses...

Merci d'avance pour toute piste proposée

Ya'v
 

Pièces jointes

  • Inventaire_3.xlsm
    56.8 KB · Affichages: 45

Dranreb

XLDnaute Barbatruc
Re : Dictionary multicolonne

Après, il semble y avoir un lien avec la feuille "Défectuosités", mais ce n'est pas clair du tout pour moi. Il vaudrait probablement mieux, si possible, que tout sois sur une seule feuille. J'ai du supprimer les Tag des ComboBox1,2,3, tel que j'ai écris ça, comme je croyais avoir compris le truc, car ils m’effaçaient les ComboBox après les choix.
 

Pièces jointes

  • CBxLiéesYa_v_ka.xls
    272 KB · Affichages: 35
  • CBxLiéesYa_v_ka.xls
    272 KB · Affichages: 46
  • CBxLiéesYa_v_ka.xls
    272 KB · Affichages: 51

ya_v_ka

XLDnaute Impliqué
Re : Dictionary multicolonne

Hello

Dranreb, j'ai juste jeté un œil rapide, je vais étudier ça une fois arrivé chez moi... Mais par contre, l'USF ne sert QU'À travailler sur la feuille défectuosités, avec quelques liaisons à l'inventaire. (Car par définition je ne peux abimer et faire réparer que quelque chose qui est à ma disposition et qui appartient à l'entreprise !)
En fait si je double-clic sur une ligne vide, je crée un nouvel avis de réparation (suivi), et si je double-clic sur une ligne existante, je la corrige ou complète. L'inventaire lui se remplit au fur et à mesure des achats pour la partie de gauche, et des contrôles périodiques pour celle de droite.

Boisgontier, 2 x merci... La première pour la piste dico, la seconde car tu auras sûrement reconnu la base de la procédure de remplissage du dico ainsi que la sub de tri ;-)

Merci aux deux, je vais essayer dès que possible de m'en sortir avec ces belles inofs.

Ya'v
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Dictionary multicolonne

Ah, oui, je dois avouer que je n'avais pas vu ce dispositif de double clic dans la feuille Défectuosités.
Il est vrai qu'elle ne porte pas Private Sub Worksheet_BeforeDoubleClick, c'est dans ThisWorkbook que ça se passe, je me demande bien pourquoi.
Je vais revoir la programmation dans ce sens.
Rien n'est donc jamais à modifier, dans la feuille Inventaire avec cet UserForm…

Ouais, bon c'est quelque chose comme ça. Mais il semble y avoir une confusion entre la défectuosité et le code N°CSB de l'inventaire qui ne figure peut être pas dans les Défectuosités. J'ai pourtant remis vos Tag.
 

Pièces jointes

  • CBxLiéesYa_v_ka.xls
    276.5 KB · Affichages: 39
  • CBxLiéesYa_v_ka.xls
    276.5 KB · Affichages: 48
  • CBxLiéesYa_v_ka.xls
    276.5 KB · Affichages: 58
Dernière édition:

ya_v_ka

XLDnaute Impliqué
Re : Dictionary multicolonne

Salut les chefs,

Désolé je n'y arrive pas...

Danreb : Ton Code est magnifique et totalement incompréhensible à mon niveau ! J'en suis à ma troisième boîte d'aspirines, 6e plantage d'Excel et 4e de l'ordi au complet et je n'arrives toujours pas à déplacer le résultat qui s'affiche dans le combobox défectuosité dans le textbox N°. Et lorsque je souhaite compléter une ligne de la feuille défectuosités, il me crée une nouvelle ligne à chaque fois... Où est géré tout ça ?

Boisgontier : Je crois avoir réussi à renseigner le dico avec un key et un item, mais je suis incapable ni de renvoyer les deux infos dans des controls différents, ni même de le récupérer dans un combobox à deux colonnes... donc je bloque !

Et malgré mes 22 heures passées sur l'aide, sur les forums (Si si, j'ai même été voir ailleurs !) et à faire des essais je n'ai pas avancé d'un centimètre par rapport à mon message 1... si ce n'est qu'il me semblait que l'approche dico me paraissait plus simple !

Alors si quelqu'un a une piste me permettant d'avancer la moindre, je lui en serait extrêmement reconnaissant

Ya'v
 

Dranreb

XLDnaute Barbatruc
Re : Dictionary multicolonne

Bonsoir.
Non, mais en fait je ne comprends pas du tout comment ça doit fonctionner.
Il semble manquer une ComboBox pour le N°CBS colonne H de la feuille Inventaire, et je ne comprends pas pourquoi il y en a une pour la désignation de la défectuosité en colonne R de la feuille Défectuosités, au lieu d'une TextBox, puisque de toutes façon ce que cette feuille contient est affiché directement quand on double clic sur la ligne.
Tout ça serait probablement plus clair si les contrôles portaient un nom mnémonique commençant par un préfixe de 3 Lettres identifiant leurs natures, CBxDsgCompo, CBxDsgObjet, CBxN°CSB.
Il ne faut surtout pas des TextBox pour les éléments qui doivent pouvoir faire l'objet d'une recherche dans la feuille inventaire. Mais autant de ComboBox que vous voulez: vous ne serez pas obligé de les renseigner toutes: elles seront automatiquement garnies dès qu'il n'existera plus qu'une seule combinaison existante formée par celles renseignées.
Je n'ai pas retouché la CommandButton1_Click (pareil BtnValider serait plus clair). Je pense qu'il n'y a plus lieu de distinguer s'il faut une nouvelle ligne ou pas: on travaille sur la ligne PlgDéfec un point c'est tout. Mais d'abord il faut clarifier cette histoire de correspondance pas claire du tout entre les données et les contrôles. En première approximation :
VB:
Private Sub BtnValider_Click()
Dim Ctrl As MSForms.Control
For Each Ctrl In Controls
   If Ctrl.Tag <> "" Then VDéf(1, CLng(Ctrl.Tag)) = Ctrl.Value
   Next Ctrl
PlgDéfec.Value = VDéf
End Sub
Mais attention, s'il y a des dates ou des données numériques, il vaudrait mieux des affectations au coup par coup. En entrée aussi d'ailleurs.
Quant aux données de la feuille Inventaires qui ne doivent pas faire l'objet de recherches, elles sont dans VInv(1, c) avec c: le numéro de la colonne.
 
Dernière édition:

ya_v_ka

XLDnaute Impliqué
Re : Dictionary multicolonne

Bonsoir Danreb,

En effet, ma vision de la chose n'est certainement pas très claire, mais je te rassure, tu y étais à plus de 98%...

Simplement la 3e Combobox n'a rien à voir avec les 2 premières qui elles sont liées, et le N° recherché vient ailleurs.

Tout est beaucoup plus clair sur la copie du fichier jointe où j'ai mis en en-tête le nom des contrôles, une explication je l'espère plus étoffée et 3 lignes d'exemples.

En tous cas merci encore de la patience dont tu fais preuve et pour ton aide.

Par contre je n'ai pas renommé les codes faisant référence aux contrôles, je verrais ça après... et pour comprendre il n'y en a que 3 à renseigner juste. (Si j'ai au moins compris ça ! :-()


Ya'v

Oups désolé, je constate que je n'ai même pas pris le temps de lire ta réponse jusqu'au bout... Le code présenté en dernier correspond plus ou moins à la base que j'avais présentée (En mieux sûrement) !
Pour les textbox relatives aux dates, c'est exactement le cas, il faudra que je formate propre, les noms de contrôles aussi.
Et le VinV, Ok, mais il se trouve ou ?

Je pensais faire quelque chose de tout simple et me retrouve avec un superbe fichier, qui pour moi me semble être une usine à gaz et me donne l'impression que c'est très lourd de renseigner une combo par rapport à l'autre...

Mais merci encore, et encore

Ya'v
 

Pièces jointes

  • Invent_3+.xlsm
    54.7 KB · Affichages: 41
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Dictionary multicolonne

Ça ne sert à rien de me renvoyer un classeur non muni de la programmation déjà faite !
Enlever le 3ième CL.Add dans userform_Initialize s'il n'y a jamais à faire de recherche dessus, et dans la Sub CL_BingoUn :
VB:
Private Sub CL_BingoUn(ByVal Ligne As Long)
LInv = Ligne
VInv = CL.PlgTablo.Rows(LInv).Value
TB_NoObj.Text = VInv(1, 8)
End Sub

Remarque: il vaudrait mieux TBxNoObj, et réserver le "_" aux noms de procédures évènements comme séparateur entre le nom de l'objet et le nom de l'évènement.
 
Dernière édition:

ya_v_ka

XLDnaute Impliqué
Re : Dictionary multicolonne

Oups...

Je viens de comprendre que si j'ai l'impression de ne pas avoir lu ton message jusqu'au bout c'est par ce que toi aussi tu travailles à des heures pas possibles et que tu le complètes au fur et à mesure... aussi :)

Ya'v
 

ya_v_ka

XLDnaute Impliqué
Re : Dictionary multicolonne

MERCI Danreb,

C'est exactement ce que je cherchais à faire... Maintenant je vais aller racheter 1 ou 2 boites d'aspirines et essayer de comprendre ton magnifique fichier afin de pouvoir l'exploiter au maximum (de mes possibilités du moins !)

Ya'v
 

Dranreb

XLDnaute Barbatruc
Re : Dictionary multicolonne

C'est sûr que c'est un peu devenu une mauvaise habitude chez moi de faire sans arrêt des édits sur mes messages. Enfin… à être 2 à l'avoir va seulement nous pousser à relire de temps à autres toute la discussion, mais on va fini par s'en sortir, j'espère… ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 160
Messages
2 085 841
Membres
103 002
dernier inscrit
LERUS