IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6]Comment puis-je passer une ComboBox en argument?


Sujet :

VB 6 et antérieur

  1. #1
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut [VB6]Comment puis-je passer une ComboBox en argument?
    Aujourd'hui, je rédige en Visual Basic 6.0 le module de mis à jour de ma base de données, correctement exportée depuis Excel. (ceci afin de tenir au courant ceux qui s'étaient intéressés à mon précédent problème).

    Bref, je veux ajouter des traducteurs, et pour mettre les langues à disposition, j'utilise 5 ComboBox. Mon problème est de retirer de chacune des ComboBox la sélection des autres. Et ceci à tout instant.

    Si, par exemple, dans la première liste, je choisis 'Albanais', je veux que Albanais soit retiré de toutes les autres listes. Mais si je veux choisir 'Anglais' dans cette première liste en lieu et place de 'Albanais', il faut que 'albanais' réapparaisse dans les autres ComboBox.

    Pour faire ceci, j'avais pensé à reremplir chacune des ComboBox à chaque modification de l'une d'entre elles, et de supprimer tous les items en cours dans les ComboBox, en veillant a ne pas supprimer dans la Combo qui viens d'être modifiée, la valeur.

    Donc, pour faire ca, j'ai deux procédures : (une avec un s l'autre sans)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub MAJCombos()
        MAJCombo (Co_langue1)
        MAJCombo (Co_langue2)
        MAJCombo (Co_langue3)
        MAJCombo (Co_langue4)
        MAJCombo (Co_langue5)
    End Sub
    Celle-ci est appelée juste après le Reremplissage de toutes les Combos avec toutes les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub MAJCombo(ByVal Combo As ComboBox)
     
        If Combo.Name <> Co_langue1.Name Then
            Co_langue1.RemoveItem (Combo.ListIndex)
        End If
     
        If Combo.Name <> Co_langue2.Name Then
            Co_langue2.RemoveItem (Combo.ListIndex)
        End If
     
        If Combo.Name <> Co_langue3.Name Then
            Co_langue3.RemoveItem (Combo.ListIndex)
        End If
     
        If Combo.Name <> Co_langue4.Name Then
            Co_langue4.RemoveItem (Combo.ListIndex)
        End If
     
        If Combo.Name <> Co_langue5.Name Then
            Co_langue5.RemoveItem (Combo.ListIndex)
        End If
     
    End Sub
    Celle-ci est appellée par la précédente.

    Je sais que mon code est très moche et absolument pas flexible, mais ca, pour le moment, c'est pas vraiment un problème.

    Mon problème survient dans cetteligne :
    L'erreur étant :
    Compile Error : Type Mismatch
    Merci par avance pour votre aide.

    Ahmed

    PS : Si vous trouvez ma question absolument débile parce que déjà renseignée, je vous serais reconnaissant de bien vouloir m'indiquer où. J'ai eu beau chercher, je n'ai pas trouvé

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ? pourquoi ByVal ? ??? c'est pas une référence que tu ve passer ... d'ou ByRef ...

  3. #3
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Merci pour la remarque, mais ca génere exactement la même erreur.

    Je crois que c'est la façon de passer les ComboBox qui est mauvaise, mais je ne sais pas comment faire

    EDIT : Juste une petite précision : les ComboBox sont remplies par l'intermédiaire d'une connexion ADODB. J'utilise les valeurs saisies dans les ComboBox pour mettre à jour ma BDD

  4. #4
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Heum... Je pars en Week-end... Je vais essayer de plancher sur ca chez moi, mais bon, si vous pouviez quand même essayer de me répondre, ca me ferait plaisir ^^

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    MAJCombo (Co_langue1)
    MAJCombo (Co_langue2)
    Je ne comprends pas l'usage de ces parenthèses puisque majcombo ne retourne pas de valeurs !
    Sub MAJCombo(ByVal Combo As ComboBox)
    2) Ni by val ni By ref mais Sub MAJCombo(Combo As ComboBox)

    3) je vois mal, dans la procédure de "nettoyage des doublons", comment sont passés les listindex... et me demande comment ce nettoyage pourra se faire, après même qu'aura été résolu ton problème actuel ...

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par jmfmarques
    2) Ni by val ni By ref mais Sub MAJCombo(Combo As ComboBox)
    ben quand tu met rien c'est by Ref...alors..!
    Citation Envoyé par Aide en ligne VB..
    ByRef Facultatif. Indique que l'argument est passé par référence. ByRef est l'option par défaut dans Visual Basic.

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    + 1
    (mais je voulais surtout qu'il ncesse de se focaliser sur ce point)

  8. #8
    mat.M
    Invité(e)
    Par défaut
    Vaut mieux faire un tableau de ComboBox c'est plus souple ou s'il y en a bcp une collection....

  9. #9
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Je peux pas tester pour le moment...

    Ceci étant, faire un tableau, tout ca, je sais que c'est mieux, le truc c'est que pour l'instant, ça m'est assez égal, en fait...
    Mon code est pour le moment franchement améliorable, j'en ai parfaitement conscience.

    Mon problème est potentiellement résolu par jmfmarques si les parenthèses sont vraiment importantes (c'est possible, je suis pas spécialiste du VB, j'ai tendance à préférer le Java et le C++).

    D'autres part, la propriété ListIndex des Combos, je pensais que c'était une propriété qui était mise à jour à chaque fois, qui contenait l'index de l'élément sélectionné en cours.

    Voila... Je sais pas si j'ai été clair, si non, dites le moi ^^

    Et merci pour vos remarques ^^

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    je pensais que c'était une propriété qui était mise à jour à chaque fois, qui contenait l'index de l'élément sélectionné en cours.
    C'est on ne peut plus exact. Il faut toutefois que la sélection soit faite (par un click ou dynamiquement). Et ton code ne nous permet pas de voir si la sélection a été faite... et comment elle a été faite..
    et comme j'ai (sans en avoir la certitude, l'impression de ce que tu dois faire des boucles pour chercher l'existence de doublons éventuels, il me parait important de savoir comment la sélection est provoquée).

    Mais je répète que cette seconde partie n'a encore rien à voir, à ce stade, avec ton problème actuel qui est simplement celui d'entrer dans ta procédure (avant même de savoir, donc, si elle te conduira au résultat escompté !)

  11. #11
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    ^^;;

    En fait, la sélection est faite par click sur les ComboBox.

    Mais j'ai absolument aucune boucle dans mon code... Ya pas de doublons dans mes combos. (Alors, à moins que j'ai pas saisi ce que tu désignes par 'doublons'...)

  12. #12
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    un doublon ? "Albanais" ici et "Albanais" là.... (ce que tu ne veux pas)
    Si ta sélection est faite par un click et que tu "chasses" les doublons à chaque fois que tu fais un click sur une Combo, retires ce que j'ai dit... qui n'a plus lieu d'être.
    Mais je ne comprends pas pourquoi cette chasse n'est pas lancée depuis ces click là...

  13. #13
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Et bien, pour tout dire, à chaque Click, je reremplis les combo, comme au moment du Form_Load.

    Et la procédure MAJCombos est appelée ensuite.
    Etant donné que je pouvais factoriser le code, je l'ai fait le plus que je pouvais.

    Enfin, je vais arrêter la pour ce week-end ^^

    Merci beaucoup jmfmarques ^^

    A lundi

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bonjour Xan,

    Je reviens avant l'heure car ton problème me turlupine depuis hier...
    C'est sa philosophie même qui me surprend. Je m'explique :
    1) s'il s'agit d'une appli pour ton boulot :
    je ne comprends pas pourquoi tu t'y prends de cette façon alors qu'il te suffirait de 5 listbox, une par langue, dans lesquelles tu mettrais tes traducteurs. (aucun doublon possible alors)

    2) s'il s'agit d'un exercice qu'on t'impose avec des comboboxes, il te suffirait, au lieu de tout ce "bastringue", de créer un groupe indexé de tes 5 combos et le seul paramètre à passer à ta procédure serait alors l'index de la combobox sur laquelle un clic a été fait. Tu n'aurais alors, de surcroit, pas à faire, dans ta procédure, tes tests sur le nom de la combo cliquée... et ton code en serait grandement allégé !

  15. #15
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Bonjour messieurs,

    Comme je le pensais, mon problème a bien été résolu par jmfmarques.
    C'est-à-dire qu'en enlevant les parenthèses à l'appel de la procédure, j'entre dans ladite procédure.

    Cependant, j'ai des problèmes internes à cette procédure que je vais m'efforcer de résoudre par moi-même avant de venir vous demander votre aide une fois encore.

    Cependant, je voulais, à la base, utiliser une listbox et prendre une sélection multiple afion de me faciliter les choses... Le problème étant que je ne sais pas récuperer la sélection multiple d'une listbox et que je n'ai pas compris l'aide la MSDN Library concernant ce contrôle.

    Je m'oriente donc vers deux solutions :
    1) Je continue avec la forme courante, en essayant de déboguer ce qui doit l'être.
    2) je transforme ce groupe de Combo en une textbox aliée à une listbox, et j'essaie de trouver comment récuperer ce dont j'ai besoin.

    Voila, merci ^^

    PS : est-ce que je dois mettre le problème comme "résolu"? et si j'ai d'autres questions relatives à mes deux solutions, je fait un nouveau post ou je continue sur celui-ci, en changeant potentiellement le titre?

    EDIT : c'est effectivement bien plus souple avec un tableau de contrôles ^^

  16. #16
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Au fait, pour répondre à tes remarques concernant la philosophie du truc, jmfmarques, je crois que j'ai dû mal m'exprimer, car visiblement tu m'as mal compris.

    Pour que les choses soient claires, je vais réexpliquer ce que je fais rapidement.

    J'ai une base de données constituée de 4 tables : Traducteur, Langue, Emplacement_Géographique, et Pratique.

    Traducteur contient le numéro de CV, les noms et prénoms, l'adresse, et les coordonées téléphoniques.

    Langue contient toutes les langues actuellement pratiquées par les traducteurs contenus dans la base.

    Emplacement_Géographique regrioupe ville, département et pays, afin, le cas échéant, de pouvoir élargir les res recherches de manière aisée.

    Enfin, Pratique constitue une liaison parametrée (dans le MCD, elle a un attribut, je veux dire) entre Langue et Traducteur.


    Pour le moment, je fais une interface afin d'ajouter un traducteur. J'ai donc ça, comme interface :


    Et donc, mon client tiens à sélectionner les langues dans une liste. De plus, il doit être capable d'en ajouter si elle n'existent pas.

    Donc, j'avais en premier lieu opté pour la solution de la textbox associée à une listbox. Problème : je ne sais pas récupérer les sélections multiples.

    En deuxième solution, des ComboBoxes mise à jour en permanence... Il va falloir que je revoie ça. Et maintenant je crois que j'ai un autre problème : je déclenche la mise à jour sur un click. Hors ma procédure de remplissage des ComboBox utilise un "DoEvents" a la fin. Et il est nécessaire sans quoi le programme se fige. Je pense donc que les liste ne sont jamais mises à jour, car il revient toujours a "Co_langue_Click(Index As Integer)"...

    Je ne sais pas si c'est plus clair...

    Ahmed


    PS : Si ca avait été un exercice, je ne serais pas venu ici, c'aurait été de la triche, et tout l'intérêt pédagogique aurait été perdu. Je suis en fait actuellement en stage ^^

  17. #17
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    OK et je te félicite pour ton esprit (j'aprécie beaucoup).
    Question : Est-ce qu'un même traducteur peut être utilisé dans plusieurs langues (car.... tu verrais bien là la complication .... tu ne pourrais pas... ou risqué, sauf si c'est un super acrobate... le mettre sur 2 langues dans la même salle ... )
    qui a conçu le MCD ?
    Autre question laconique (curiosité personnelle), appelant une réponse laconique : rue de la Loi ? :

  18. #18
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    En effet, un traducteur peut être enregistré pour plusieurs langues. A dire vrai, cette base de données constitue la liste de contact de mon patron (ou client, ca dépend comment on se place ).

    Ce n'est donc pas pour affecter tel ou tel traducteur à telle ou telle tâche, mais pour savoir quels sont les traducteurs avec qui il a des contacts.

    C'est moi qui ai conçu le MCD. Si tu veux, je pourrais te l'envoyer, mais je ne le posterais pas sur le forum.

    Et pour finir, non pas rue de la Loi, mais rue Solférino ^^

  19. #19
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Vu pour la rue.
    Pour le reste, ne m'envoies encore rien.... je vais d'abord réfléchir à un mécanisme, tranquillement ....

  20. #20
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Finallement, le fait que toutes les langues soient présentes dans toutes les ComboBoxes ne constitue pas un problème pour le client.

    Ainsi donc, je me serais creusé la tête pour rien. Ceci étant, j'arrive près du but. Si je trouve, je posterais la solution ici, afin que si d'aventure quelqu'un d'autre en aurait besoin, ce soit présent.

    Ahmed

    PS : Je vais quand même considérer le problème comme résolu ^^

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  2. [VB6] Comment donner un chemin à une image ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 28/04/2006, 09h18
  3. Comment passer une fonction en argument
    Par Pades75 dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h34
  4. [VB6]Problème de rafraichissement d'une combobox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2006, 16h58
  5. [MFC] comment associer 2 valeurs à une ComboBox
    Par drinkmilk dans le forum MFC
    Réponses: 2
    Dernier message: 13/04/2005, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo