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

Macros et VBA Excel Discussion :

Creation de combobox liées


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Creation de combobox liées
    Bonjour
    J'ai sur une feuille excel 2 colonnes contenant dans une la désignation d'objets et dans la 2eme la référence propre à chacun de ces objets
    J'ai créé un userform avec 2 combobox
    Le premier combobox et alimenté par la colonne des objets et le second par leur référence.
    Je souhaiterai que lorsque je choisisse un objet dans mon premier combobox s'affiche automatiquement la référence dans le second combobox et à l'inverse quand je choisi une référence s'affiche automatiquement son objet.
    Pourriez-vous m'aider merci...

  2. #2
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.vlookup(cbx1.Value, tableau_de_correspondance, 2)
    te permet de récupérer les références si le tableau des correspondance est composé des ocjets et en colonne 2, des références.

    Tu peux appeler cette fonction lorsque la valeur de la combobox1 est changée. Et vice-versa pour la deuxième combobox.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Creation combobox liées
    Merci pour ta reponse
    En piece jointe le classeur en question
    Je ne suis pas doué en vba je ne sais pas ou placer ta ligne de code
    Les sources pour les combobox se trouvent sur la feuille 2
    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Je ne vois pas de Feuil2

    Mais mon code serait à insérer dans les modules du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub ComboBox1_Change()
    End Sub
    J'ai pas vérifié les numéros de combobox, mais aux numéros de combobox près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox1_Change()
        ComboBox2.Value = Application.vlookup(ComboBox1.Value, tableau_de_correspondance, 2)
    End Sub
    Par contre, attention : avec vlookup, il faut que la valeur qu'on cherche soit dans la première colonne. Du coup, si tu veux faire les correspondances dans les 2 sens, il faut que tu aies un tableau du type :
    nom | référence | nom
    pour pouvuoir utiliser la parti "nom | référence" dans un cas et la partie "référence | nom" dans l'autre cas.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Creation combobox liées
    Bonjour
    Malgré tes conseils je n'ai pas reussi à faire fonctionner mes combobox.
    En piece jointe le bon classeur excel
    Encore merci...Cordialement
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Tu dis que tu n'as pas réussi à faire marcher les combobox, mais dans ton fichier, je ne vois l'application d'aucun de mes conseils. Le tableau a seulement 2 colonnes et il n'y a pas de code pour les combobox. Qu'est-ce que tu ne comprends pas?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Creation combobox liées
    Désolé je m'etais trompé de classeur.
    J'ai fait comme tu m'a dis... enfin je pense
    Fichiers attachés Fichiers attachés

  8. #8
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Attention regarde bien ce que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox1_Change()
        ComboBox2.Value = Application.vlookup(ComboBox1.Value, tableau_de_correspondance, 2)
    End Sub
    Contre toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
        ComboBox2.Value = Application.VLookup(ComboBox3.Value, Feuil2, 2)
    End Sub
    Tu veux que quand la ComboBox2 change, la ComboBox3 prenne une certaine valeur. Sub ComboBox2_Change est une méthode qui se déclenche lorsqu'on on a changé ComboBox2. Donc, dans cette méthode, tu écris ce qu'il doit se passer quand tu changes ComboBox2 --> dans ton cas, tu veux attribuer une certaine valeur à ComboBox3.

    Ensuite, comme le dit son nom "Feuil2", n'est pas un tableau de correspondance, mais une feuille. Un tableau de correspondance est une plage de cellules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil2").Range("A:B")
    Mis bout à bout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
        ComboBox3Value = Application.vlookup(ComboBox2.Value, Sheets("Feuil2").Range("A:B"), 2)
    End Sub

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Creation combobox liées
    Rien n'y fait. Je suis vraiment navré te faire perdre ton temps. Je suis résolument mauvais.
    Fichiers attachés Fichiers attachés

  10. #10
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    On va jouer au jeu des 7 différences

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
        ComboBox3Value = Application.vlookup(ComboBox2.Value, Sheets("Feuil2").Range("A:B"), 2)
    End Sub
    Ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
    ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2"), Range("A1:C402"), 2)
    End Sub



    1. Les numéros de combobox !!
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
        ComboBox3Value = Application.vlookup(ComboBox2.Value, Sheets("Feuil2").Range("A:B"), 2)
    End Sub

    Ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
    ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2"), Range("A1:C402"), 2)
    End Sub
    Je te remets ce que je t'ai expliqué:
    Tu veux que quand la ComboBox2 change, la ComboBox3 prenne une certaine valeur. Sub ComboBox2_Change est une méthode qui se déclenche lorsqu'on on a changé ComboBox2. Donc, dans cette méthode, tu écris ce qu'il doit se passer quand tu changes ComboBox2 --> dans ton cas, tu veux attribuer une certaine valeur à ComboBox3.
    A gauche du signe "=", on met la "chose" qu'on veut changer, à droite, on met la valeur qu'on veut donner à la chose.

    2. La syntaxe pour indiquer la plage:
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
        ComboBox3Value = Application.vlookup(ComboBox2.Value, Sheets("Feuil2").Range("A:B"), 2)
    End Sub

    Ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox2_Change()
    ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2"), Range("A1:C402"), 2)
    End Sub
    3. La plage:
    La première colonne doit être la colonne de la valeur cherchée. "2" indique que la valeur cible est dans la 2ème colonne. Donc dans un cas il faudra mettre "A:B" et dans l'autre "B:C". Dans le cas où la combobox DONT ON CHANGE LA VALEUR a ces valeurs dans la colonne A, on mettra "A:B".

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Creation combobox liées
    Je peux pas faire mieux j'ai copier-coller tes codes
    J'ai l' erreur 1004 erreur definie par l.applicatipn ou par l.objet.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Dans ton document je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox3_Change()
        ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2"), Range("B:C"), 2)
    End Sub
    Et non pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox3_Change()
        ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2").Range("B:C"), 2)
    End Sub
    Ce code marche chez moi.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Creation combobox liées
    Bonjour
    La bonne syntaxe à en effet fait fonctionner les combobox
    Par contre les choix se font de manière aleatoires et mélangées ex si je choisi "1/2 CAISSON MONOBLOC" la combobox se modifie et bascule sur un objet différent et de surcroit la reference change également.
    Aurais tu une idée
    Cordialement.

  14. #14
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Peux-tu essayer avec cette syntaxe (ajouter ", 0") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox3_Change()
        ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2").Range("B:C"), 2, 0)
    End Sub
    Si tu as toujours des problèmes, essaie avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox3_Change()
        Application.EnableEvents = False
        ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2").Range("B:C"), 2, 0)
        Application.EnableEvents = True
    End Sub
    Si cela ne marche pas, peux-tu me mettre en pièce joint le fichier, que j'essaie.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Ouvrier
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Points : 5
    Points
    5
    Par défaut creation combobox liées
    salut
    merci pour ta réponse. Ça marche déjà beaucoup mieux. Par contre quand je navigue dans la combobox à l'aide des flèches ça me met une erreur et également si je saisi manuellement les premier caractère d'un objet. Serait il possible d'avoir les réferences de la colonne B par ordre Alphabétique dans la combobox sans modifier l'ordre de la source.
    Merci pour ton aide
    Fichiers attachés Fichiers attachés

  16. #16
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,
    Avant de répondre à ta question, la combobox3 est bien codée, comme indiquée précédemment mais tu as oublié 2 lignes pour la combobox 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ComboBox2_Change()
    Application.EnableEvents = False
    ComboBox3.Value = Application.VLookup(ComboBox2.Value, Sheets("Feuil2").Range("A:B"), 2)
    Application.EnableEvents = True
    End Sub
    
    
    Private Sub ComboBox3_Change()
    Application.EnableEvents = False
    ComboBox2.Value = Application.VLookup(ComboBox3.Value, Sheets("Feuil2").Range("B:C"), 2, 0)
    Application.EnableEvents = True
    End Sub
    Pour l'erreur : j'ai essayé, et tout marche très bien lorsqu'on sélectionne des références qui ont des lettres, c'est lorsqu'on sélectionne un nombre que ça ne marche pas. Je t'avoue que là, je ne sais pas pourquoi Je te conseille d'ouvrir une autre discussion expliquant ce problème. *

    Si tu veux que les 2 listes soient en ordre alphabétique, il faudra créer, dans ta feuille source, 4 colonnes (et non pas 3). Les 2 premières restant les mêmes et les 2 dernières étant le symétrique des 2 premières. Puis tu trie par ordre alphabétique (Accueil > Trier et filtrer). Du coup dans ta combobox3, tu feras une recherche sur C: D (au lieu de B:C)



    * Je me permets juste de faire un commentaire sur la présentation de cette discussion. Sur le forum, on n'aime pas les pieces jointes. Il vaut mieux que tu nous écrives ton code qui a des problèmes, comme je l'ai fait dans ce message par exemple. Tu nous explique clairement ton projet, tu nous dit ce que tu as fait pour l'instant, en écrivant le code (avec les balises codes #) et tu nous expliques clairement quel est ton problème. Ton problème peut être : une erreur, alors il faut donner l'erreur que tu obtiens et la ligne de code où elle apparaît; tu ne sais pas quelle fonction utiliser pour telle ou telle action, alors il faut bien expliquer ce que tu as déjà fait et où tu bloques; ton code tourne, mais ne donne pas le bon résultat, pareil il faut bien expliquer ce que tu veux faire avec ton code et ce que tu obtiens à la place. Tu peux éventuellement mettre des copies d'écrans si cela illustre bien ton problème.
    Et c'est un aussi un peu étrange de mettre une discussion en "résolue" et de reposer une question derrière. Les personnes qui parcourent le forums pour répondre aux questions n'ouvrent pas tellement des discussions "résolue", vu qu'a priori, il n'y a plus de problèmes

    Bon courage pour la suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Combobox liées aux precdentes
    Par titeZ dans le forum IHM
    Réponses: 1
    Dernier message: 01/10/2007, 19h07
  2. creation dynamique combobox
    Par Elstak dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/05/2007, 12h06
  3. [c#][.NET 2.0] Datagrid avec 2 combobox liées entre elles
    Par axl63800 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/04/2007, 09h31
  4. [VBA-E] Probleme de creation de combobox
    Par sirius91 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/01/2007, 19h50
  5. Creation de tables liées
    Par Elwe dans le forum Access
    Réponses: 8
    Dernier message: 20/09/2005, 14h20

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