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 :

2 LISTBOX qui varient selon les éléments sélectionnés [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Par défaut 2 LISTBOX qui varient selon les éléments sélectionnés
    Bonjour à tous,

    Mon problème :

    je possède 2 listbox

    Ma listbox1 possède un gros nombres d'éléments qui varient en fonction des éléments cochés précédemment,
    lorsque un élément de la listbox1 et aussi un élément de ma colonne "H" feuil3
    cette élément se cache dans la listbox 1 et apparait dans la listbox2.

    Lorsque l'élément est supprimé dans la colonne H, il réapparaît dans la listbox1 et s'éfface dans la listbox2.

    Merci pour votre attention et merci au forum.

    Cordialement

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pas certain d'avoir bien compris ta demande.
    Voici un exemple d'un UserForm ayant deux contrôles ListBox nommés ListBox1 et ListBox2.
    ListBox1 est chargé à l'initialisation du UserForm des étiquettes de colonnes de la liste de données se trouvant sur la feuille nommée [db] et ce à partir de la cellule A1.
    En faisant un double click sur un des éléments de ListBox1, celui ci est supprimé de ListBox1 et s'ajoute dans ListBox2 et inversément
    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
    Option Explicit
    Dim wkb As Workbook, sht As Worksheet, rng As Range
    Const shtName As String = "db"
    ' ======
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     With ListBox1: ListBox2.AddItem .List(.ListIndex, 0): .RemoveItem (.ListIndex): End With
    End Sub
    ' ======
    Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     With ListBox2: ListBox1.AddItem .List(.ListIndex, 0): .RemoveItem (.ListIndex): End With
    End Sub
    ' ======
    Private Sub UserForm_Initialize()
     Set wkb = ThisWorkbook: Set sht = wkb.Worksheets(shtName)
     Set rng = sht.Range("A1").CurrentRegion
     Dim c As Byte
     ' Charge la liste des étiquettes dans ListBox1
     With ListBox1
     .ColumnCount = 1
      For c = 1 To rng.Columns.Count: .AddItem sht.Cells(1, c): Next
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Par défaut
    Salut, merci pour ta réponse, je comprends ce que tu as voulu faire et celà m'aide dans ma progression en VBa mais ce n'est pas tout à fait ce dont j'ai besoin.

    Je vais t'expliquer mon programme.

    Mon but est de réaliser une bibliothèque informatique qui référence les outils de métrologie et de pouvoir les emprunter et les rendres.

    Pour celà, chaque opérateur possède un id (un nombre) qu'il rentre dans une première textbox
    il clique sur OK et apparait son "nom et prenom"
    ensuite une listbox lui demande de choisir son outil (=pied à coulisse, tampons, micromètre ....)
    cette listbox est affecté à plusieur listbox qui permettent d'avoir sa désignation (=pied à coulisse : digital, à bec rond ...)
    on clic sur celui que l'on veut, sur une autre listbox apparait ses dimensions (= 0 - 200 , 0 - 500 ...)

    on clic et c'est ici qu'intervient mon problème :
    dans ma listbox1 apparait le code outil (=PAC001, PAC002 ....) de chaque outil disponible. ----> listbox1 = objet disponible
    (excel feuil 2,4,5,6,7,8 --> base de donnée qui référence tout mes outils avec désignation, dimensions , code)

    La feuil3 excel est l'enregistrement de : ID ("B") , Nom Prénom ("C"), Outil ("D"), désignation ("E), dimensions ("F"), date ("G") ,code outil (colonne H)

    si en feuil3 l'enregistrement du code est égal à celui de la listbox1, on le cache en listbox1 et il apparait en listBox2 ----> listbox2 = objet indispo

    une autre macro me permet le rendu de l'outil qui supprime la ligne excel de l'enregistrement choisit, d'ou le code outil listbox1 redevient différent du code outil colonne H car il a été supprimé donc il réapparait listbox1 et n'existe plus dans la listbox2

    J'espère avoir été plus claire, si ce n'est pas le cas je peux t'envoyer mon dossier par mail car il est supérieur à 2 Mo et je n'arrive pas à le télécharger : matthieu.therrat@gmail.com

    longue vie au forum

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans ta question il y a en fait plusieurs donc idéalement tu devrais ouvrir plusieurs discussions traitant chaque fois d'un sujet sinon cela revient à demander de faire le travail à ta place.
    J'espère avoir été plus claire, si ce n'est pas le cas je peux t'envoyer mon dossier par mail car il est supérieur à 2 Mo et je n'arrive pas à le télécharger :
    Il n'est pas question comme préciser plus haut de faire ce travail.
    Ce que tu demandes représente plusieurs heures de travail si tu souhaites que l'application soit pérenne, facilement maintenable et puisse être sans trop de difficultés améliorée.
    La première chose est de faire une analyse de la gestion des données, une ou plusieurs feuilles représentant des tables, établissement d'une feuille avec les paramètres, etc.
    Pour celà, chaque opérateur possède un id (un nombre) qu'il rentre dans une première textbox
    il clique sur OK et apparait son "nom et prenom"
    Cela équivaut à une gestion de table où l'on doit avoir la possibilité de créer, consulter, modifier et supprimer un enregistrement (CRUD est l'acronyme anglais)
    Voir cette contribution USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire.

    Pour le reste, il faudrait avoir une explication plus explicite des tables qui alimenteront les contrôles LisBox.
    • Est-ce la même liste pour tous ?
    • Faut-il ouvrir un deuxième ListBox dépendant du choix fait dans le premier, etc. ?


    Comme expliqué au début de ma réponse, décompose ton problème et pose chaque question sur des discussions distinctes, en commençant éventuellement dans la rubrique Conception si tu ne t'en sors pas dans l'analyse
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Par défaut
    Encore merci pour ta réponse.

    Je dois vraiment ne pas savoir m'exprimé

    Enfaite la casi totalité du programme est fait, mon seul problème apparait à la fin avec mes 2 listbox.

    j'aimerai traduire cette phrase en expression Vba :
    Si "un élément" rentré colonne H feuille 3 est similaire "un élément" en listbox1 alors cette "élément" disparait en listbox1 et apparait en listbox2.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    j'aimerai traduire cette phrase en expression Vba :
    Si "un élément" rentré colonne H feuille 3 est similaire "un élément" en listbox1 alors cette "élément" disparait en listbox1 et apparait en listbox2
    Plusieurs questions qui peuvent donner une réponse différente
    • Le ListBox1 est alimenté comment ?
    • L'encodage en Feuil3 (colonne H) est-il alimenté manuellement ou par le UserForm ?
    • Si c'est manuellement, est-ce que le UserForm est modal ou pas ?

    Ton problème me fait penser à une application de prêt de matériel ou autres donc je pencherais pour une feuille reprenant les mouvements de prêt avec une ou plusieurs colonnes qui indiquent le retour de la référence empruntée ainsi la gestion des contrôles ListBox sera plus aisée
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 21/05/2012, 15h46
  2. Réponses: 1
    Dernier message: 29/07/2010, 16h10
  3. élément qui bouge selon les résolutions dans un mail
    Par petitobi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/10/2009, 23h18
  4. Réponses: 1
    Dernier message: 11/07/2007, 22h44
  5. Réponses: 4
    Dernier message: 09/08/2006, 11h05

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