Relation entre 3 ComboBox

Salut,

Alors il y a un problème qui je pense ne doit pas être important :

Ton code fonctionne , quand on choisit le code les TextBox se remplissent comme prévu.

Par contre, il faut relancer le USERFORM à chaque fois qu'on fait une recherche, car si tu regardes bien , une fois qu'on a effectué une recherche le code dans la Combobox 3 reste affiché. Et si on veut relancer tout de suite une recherche derrière, le code affiché reste le même. Pour contrer ça il faut donc à chaque fois relancer le UF pour une nouvelle recherche.

Peut être gommer ceci ? de manière à ne pas devoir le relancer tout le temps ?

Si tu avais plusieurs données dans le combo3 ça fonctionnerait.

S'il n'y a qu'un item c'est normal, Excel ne réagit pas si ont reclic sur le même item

Par exemple, si plusieurs item dans le combo2, change dans Combo2 et tu verras que ça fonctionne

EDIT :

J'ai compris ce que tu veux dire..

ajoute la ligne

            ComboBox3.ListIndex = -1

juste au dessus de

PasseErreur:

pour avoir

            ComboBox3.ListIndex = -1
PasseErreur:
lermite a écrit :

Si tu avais plusieurs données dans le combo3 ça fonctionnerait.

S'il n'y a qu'un item c'est normal, Excel ne réagit pas si ont reclic sur le même item

Par exemple, si plusieurs item dans le combo2, change dans Combo2 et tu verras que ça fonctionne

Effectivement, avec plusieurs items c'est OK, mais comme précisé précédement, on peut avoir 1 ou plusieurs banque(s) pour une seul société..

Mais qu'il y en ai une ou plusieurs, on avoir:

  • un seul code si une seule banque
  • plusieurs codes pour une seule banque
  • un seul code par banque si plusieurs banques
  • plusieurs codes par banque si plusieurs banques

Tout ça pour dire qu'on peut avoir 1 seul résultat comme plusieurs.

Comment éviter dans le cas où il n'y ai qu'un seul résultat , que ce résultat reste ?

J'ai pensé à une solution: mettre un bouton qui refresh les cases mais l'idéal est quand même de loin que ça s'enleve tout seul.

EDIT: Je viens de voir ton ajout en édit, alors ça fonctionne mais toujours un petit problème ! En fait quand on refait une recherche après une autre, le résultat d'avant reste dans la sélection de la combobox 3, donc si tu fais une seule recherche tu vas avoir 1 résultat si un seul code, mais si tu fais 20 recherches , tu auras les 19 résultats antérieurs + tous les codes de la dernière recherche !

Voir EDIT dans mon poste précédant

lermite a écrit :

Voir EDIT dans mon poste précédant

EDIT: Je viens de voir ton ajout en édit, alors ça fonctionne mais toujours un petit problème ! En fait quand on refait une recherche après une autre, le résultat d'avant reste dans la sélection de la combobox 3, donc si tu fais une seule recherche tu vas avoir 1 résultat si un seul code, mais si tu fais 20 recherches , tu auras les 19 résultats antérieurs + tous les codes de la dernière recherche !

Je dois pas encore être bien réveillé

ajoute en dessous de

    ElseIf CbxIndex = 3 Then
                    ComboBox3.Clear

Niquel !

Petite question : Est-il possible de faire en sorte que la CB3 se clear en même temps que la 2 en plaçant

                    ComboBox3.Clear

en dessous de

                    ComboBox2.Clear

??

Comme dit précédemment, je dors encore, tu a tout à fais raison c'est pas à la bonne place.

En fait tout était nickel dans mes version précédentes avec 3 combo

Modifie cette procédure comme suit..

Private Sub ComboBox1_Change()
    If Noaction Then Exit Sub
    InitFormulaire True
    ComboBox2.Clear
    ComboBox3.Clear
    Alim_Combo 2
End Sub

Je pense que comme ça tout serra en ordre

Tu a compris comment fonctionne la procédure qui Vide/Rempli les TextBox ?

Ca marche c'est bueno !

Oui le fonctionnement général ça va, par contre le code... J'ai l'impression d'être complètement à la ramasse :

En gros, je crois que je peux devniner la structure du code, car c'est de la logique, mais de là à l'écrire après... Sans toi j'aurai jamais pu.

D'ailleurs, j'ai une dernière question avant que tout soit OK ! (Oui je sais , désolé je suis aussi chiant que l'autre personne que t'as aidé pour le même problème )

En fait dans le fichier original, je compte mettre 3 types de recherche:

  • La première avec ce qu'on vient de faire (Sociétés/banques/codes) --> tri par sociétés
  • La deuxième (Banques/sociétés/codes) ---> tri par banques
  • La troisième (Codes/banques/sociétés) ---> tri par codes

Est ce que je peux tout simplement réécrire le code du premier type de recherche que tu as écris pour moi en changeant les numéros des combobox et l'ordre des colonnes ?

Faut pas tout réecrire, juste une variable à ajouter

Le remplissage des TextBox est le même ?

Donne les colonnes qui doivent être prise en compte pour la recherche 2 et aussi la recherche 3

lermite a écrit :

Faut pas tout réecrire, juste une variable à ajouter

Le remplissage des TextBox est le même ?

Donne les colonnes qui doivent être prise en compte pour la recherche 2 et aussi la recherche 3

Bah c'est la même chose pour le remplissage des Textbox, ça change pas.

Pour les colonnes c'est pareil c'est toujours les même; par contre c'est pas le même ordre car :

  • avant on avait sociétés/banques/codes donc colonne AN/AM/A
  • Pour la type 2 ça sera AM/AN/A
  • Pour la type 3 ça sera A/AM/AN

Oui, je l'ai vu mais j'avais déjà posté

A tester..

EDIT : supprimer fichier obsolète

Re,

Désolé j'étais parti manger ^^

Alors, c'est vraiment au top. Ca marché du feu de dieu.

Par contre je n'arrive pas à l'intégrer au fichier original (en gros pr passer du fichier test à l'original j'ai juste à modifier le nom de le sheet de Feuil1 à 'Base de données').

L'erreur concerne ceci: TitCB1 , variable non définie

La variable TitCB(2) est déclarée en entête de module

et petite modif (amélioration)

adapte...

Private Sub ComboBox2_Change()
    If Noaction Then Exit Sub
   InitFormulaire True
    Alim_Combo 3
End Sub

EDIT ; C'est pas ça,

Renommer les 3 label au dessus des combo par TitCB1, au dessus du combo1 TitCB2 au dessus du Combo2 et TitCB3 au dessus du Combo3

Ca marche !

C'est vraiment parfait.

Je sais pas comment te remercier c'est vraiment sympa de m'avoir aidé.

T'es informaticien pour pisser du code comme si de rien était ?

Mais non... tu verras, avec un peu de temps tu y arriveras aussi.

Tu te défend déjà pas mal si comme tu dis tu viens d'ouvrir l'IDE de VBA, et tu comprend vite.

A+

lermite a écrit :

Mais non... tu verras, avec un peu de temps tu y arriveras aussi.

Tu te défend déjà pas mal si comme tu dis tu viens d'ouvrir l'IDE de VBA, et tu comprend vite.

A+

Yep

Je peux abuser de toi une dernière fois ?

Juste si c'est possible de me détailler à peu près chaque passage de code en me disant à quoi ça correspond que j'apprenne ça à tête reposé ?

C'est bien d'être aidé, mais comprendre de A à Z c'est mieux ^^

(Genre entre les lignes tu mets comme al plupart des gens 'texte')

Si tu n'as pas le temps c'est pas grave, je te remercie encore.

Comme ça ?

Tu a aussi la touche F1 qui est TRÈS intéressante, double clic sur un mot de syntaxe pour le mettre en surbrillance et tape F1.

48eliot-retour5.zip (31.11 Ko)

génial, c'est super.

j'ai modifié la structure sur mon fichier original.

Tout est OK sauf une chose, il y a eu une colonne supplémentaire en plein milieu du fichier qui a été rajouté par quelqu'un du service !! (le fichier est sur un réseau d'entreprise pro, donc tous les gens de mon secteur qui bossent dessus y ont accès).

Du coup j'ai redéfini les colonnes à prendre en compte, mais une partie des TEXTBOX ne prennent plus les valeurs qu'il faut.

J'ai du mal à cerner où dans le code les textbox prennent leur valeur à la source.

Sur l'UF sélectionne un TextBox, si la fenêtre des propriétés n'est pas affichée clic droit sur le TextBox --> propriétés.

Dans la fenêtre Propriétés dans le bas tu a ->> TAG avec un numéro dans sa valeur, c'est le N° de la colonne à changer.

Mais si tout le monde peu tout modifier tu va jamais y arriver.

Normalement une seule personne doit avoir ce droit sinon ça va être le Bo....l

Rechercher des sujets similaires à "relation entre combobox"