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 :

"Combiner" deux ListBox


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Par défaut "Combiner" deux ListBox
    Bonjour,

    J'aurai besoin de votre aide concernant mon projet de stage. J'ai crée un formulaire en utilisant du code VBA pour faciliter les commandes de l'entreprise ( voir screen numéroté 1 ). Comme vous pouvez le voir, il y a des Options, des Quincailleries ainsi que des Epaisseurs/Largeurs faisant référence aux planches utilisées.

    Au début, je voulais faire en sorte que l'utilisateur sélectionne tout ce dont il a besoin, et qu'en cliquant sur "Ajouter" tout ce qui a été rempli aille directement dans un tableau Excel > cela fonctionne il n'y a pas de soucis.

    Cependant, mon maître de stage m'a demandé à ce que, par exemple lorsqu'on sélectionne "Garage 3m", toutes les planches requises soient automatiquement sélectionnées au lieu de devoir les cocher une par une > c'est la que ça bloque, cela fait plusieurs jours que je suis bloqué la dessus.

    Et dans mon idée, j'aurai bien aimé que les calculs du prix total se fassent automatiquement pour encore une fois faire gagner du temps. ( Le prix total se calcule en faisant épaisseur x largeur x longueur x quantité x prix au m2 )

    Je peux vous envoyez par mail mon travail ( ne sachant pas comment le joindre ici, je suis nouveau )
    - la feuille "Source" correspondant au tableau où toutes les données seront placées après avoir cliqué sur le bouton "Ajouter",
    - la deuxième feuille correspond aux différentes maisons que je dois gérer, avec chacune leurs Options et Quincailleries nécessaires
    - La feuille "Liste" sert juste à alimenter mes ListBox placées dans mon formulaire
    - La dernière feuille sert juste à afficher le formulaire à l'aide d'un bouton

    Je vous remercie de votre aide, si vous avez une éventuelle question sur quelque chose que vous n'avez pas compris, je serais en mesure d'y répondre.
    Images attachées Images attachées  

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, il faudrait une copie d'écran de la feuille liste, car j'imagine que c'est sur elle que se trouve les données qui permettent la charges des listbox.
    si vous souhaitez joindre un dossier à votre réponse, vous avez à cet effet en dessous de la feuille de réponse des options supplémentaires dont les pièces jointes, que vous avez du utiliser pour votre "screen1". vous pouvez joindre aussi un dossier.
    Cordialement

  3. #3
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    bonjour hidessj

    déjà pour que envoyer tes données dans une base en cliquant sur Ajouter
    tu peux mettre se code là dans le bouton Ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Private Sub Ajouter_Click()
    Sheets("base").Range("A1").End(xlDown).Offset(0, 0).Value = TextBox1.Value
    'et ainsi de suite avec tous tes textbox etc ...
     
    End Sub
    EDIT j'ai lu vite fais
    pour faire ce que tu demande fait une condition
    dans ta forme ou son contenu garage 3m

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If (textbox1.Value = "garage m3") Then
     
    ' tu selectionne tes bonne planche
    End If
    en espèrent avoir bien compris

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Par défaut
    Bonjour Transitoire,

    Dans un premier temps, merci de ta réponse. En effet, je te mets en PJ mon formulaire comprenant mes Listes et le reste de mon travail

    Cordialement.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Par défaut
    Bonjour Tony76,

    Pour le bouton Ajouter j'arrive bien à faire en sorte que tout se place dans le tableau donc aucun soucis là dessus ! ( Par contre je t'avoue que je me demande comment faire une fois que j'aurai réussi à mettre en place ce que je veux, par exemple lorsque quand je sélectionnerai "Garage 3m" que ce soit les planches associées qui se mettent directement dans le tableau, et non pas la désignation "Garage 3m" )

    Je regarde cependant pour ta dernière proposition avec le "If", merci beaucoup !

    Cordialement.

  6. #6
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Re,

    Pour ce que tu veux faire en faite je tes donné la réponse involontairement

    la condition et dedans ce que tu veux,
    dans ta forme " Options " tu mes la condition si on clique sur garage 3m ou 4m ou 6m etc ....
    et pour aller plus loin tu peux mettre plusieurs conditions pour les autres je te laisse arranger les textbox et les offset

    et tu peux faire une boucle pour que cela soit plus joli

    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
    24
    25
     
    If (TextBox1.Value = "garage 3m") Then
     
        Sheets("base").Range("A1").End(xlDown).Offset(0, 0).Value = TextBox1.Value 'Options
        Sheets("base").Range("A1").End(xlDown).Offset(0, 1).Value = TextBox2.Value 'Désignation
        Sheets("base").Range("A1").End(xlDown).Offset(0, 2).Value = TextBox3.Value 'Epaisseurs/largeurs
        Sheets("base").Range("A1").End(xlDown).Offset(0, 3).Value = TextBox3.Value 'Longeur etc ......
     
        MsgBox ("Enregistrement effectué pour le garage 3m")
     
    ElseIf (TextBox1.Value = "garage 4m") Then
     
        Sheets("base").Range("A1").End(xlDown).Offset(0, 0).Value = TextBox1.Value 'Options
        Sheets("base").Range("A1").End(xlDown).Offset(0, 1).Value = TextBox2.Value 'Désignation
        Sheets("base").Range("A1").End(xlDown).Offset(0, 2).Value = TextBox3.Value 'Epaisseurs/largeurs
        Sheets("base").Range("A1").End(xlDown).Offset(0, 3).Value = TextBox3.Value 'Longeur etc ......
     
    ElseIf (TextBox1.Value = "garage 6m") Then
     
        Sheets("base").Range("A1").End(xlDown).Offset(0, 0).Value = TextBox1.Value 'Options
        Sheets("base").Range("A1").End(xlDown).Offset(0, 1).Value = TextBox2.Value 'Désignation
        Sheets("base").Range("A1").End(xlDown).Offset(0, 2).Value = TextBox3.Value 'Epaisseurs/largeurs
        Sheets("base").Range("A1").End(xlDown).Offset(0, 3).Value = TextBox3.Value 'Longeur etc ......
     
    End If

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Par défaut
    Bonjour Tony,

    Déjà je te remercie pour ta réponse, tu me sembles être sur quelque chose de pas mal, je n'y aurai pas pensé seul !
    Cependant, je vois que tu mets "Textbox1.Value" dans ton If, et moi c'est une ListBox appelée "lstOptions", penses-tu que je dois plutôt écrire "lstOptions.Value = "Garage 3m" " par exemple?

    Aussi, le code que tu m'as donné, je dois le mettre sur le bouton "Ajouter" ? ou bien dans ma Listbox "Options" ?

    Sinon, merci énormément, tu me sauves !

  8. #8
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    bonsoir,

    Content si j'ai pu aider, clique sur le petit pouce vert

    pour ce qui et de l'emplacement oui mais ce code dans la forme " Options "
    pour ce qui et du textbox1 je mais ça par défaut j'aurais très bien pu mettre Combobox1 (à toi de l'adapter)
    après le code et brouillon il y a beaucoup mieux à faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    If (Me.ComboBox1.Value = "garage 3m") Then
     
            With Sheets("base")
                .Range("A1").End(xlDown).Offset(0, 0).Value = TextBox1.Value 'Options
                .Range("A1").End(xlDown).Offset(0, 1).Value = TextBox2.Value 'Désignation
                .Range("A1").End(xlDown).Offset(0, 2).Value = TextBox3.Value 'Epaisseurs/largeurs
                .Range("A1").End(xlDown).Offset(0, 3).Value = TextBox3.Value 'Longeur etc ......
            End With
                MsgBox ("Enregistrement effectué pour le garage 3m")
    End If
    tu peux aussi faire une boucle

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Par défaut
    Bonjour,

    Merci pour ta précision mais il y a quelque chose que je ne comprends pas dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If (Me.ComboBox1.Value = "garage 3m") Then
     
            With Sheets("base")
                .Range("A1").End(xlDown).Offset(0, 0).Value = TextBox1.Value 'Options
                .Range("A1").End(xlDown).Offset(0, 1).Value = TextBox2.Value 'Désignation
                .Range("A1").End(xlDown).Offset(0, 2).Value = TextBox3.Value 'Epaisseurs/largeurs
                .Range("A1").End(xlDown).Offset(0, 3).Value = TextBox3.Value 'Longeur etc ......
            End With
                MsgBox ("Enregistrement effectué pour le garage 3m")
    End If
    Ce sont les lignes en gras, à quoi renvoient-elles ?

    Merci

  10. #10
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Bonjour,

    Bah c'est pratiquement le même code que sur le pot du dessus

    en gros si une personne sélectionne garage 3m il faut que tu enregistre des info dans la base
    à toi de modifié les textbox que j'ai mis par tes forme

    ou si tu préfère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If (Me.ComboBox1.Value = "garage 3m") Then
     
          ' ton code si on sélectionne garage 3m
    End If

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Par défaut
    Bonjour,

    Oui je vois bien ce que tu veux dire, merci! Mais mon problème au début c'était le fait que lorsqu'on choisisse par exemple "Garage 3m" ( et que l'on remplisse tout le reste, évidemment ) et que l'on clique sur "Ajouter", que ce soit directement les planches associées à "Garage 3m" qui soit sélectionnées et affichées dans la base de données, à la place de "Garage 3m" justement.

    Genre ton code avec le "If" me semble le plus adéquat mais je n'ai aucune idée de quoi mettre dedans pour lui dire de sélectionner telles planches pour cette option et ensuite lui dire de les places dans la base

    Je sais pas si j'ai été assez clair

  12. #12
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Re,

    Oui j'ai très bien compris et ce que je tes donner, correspond exactement à ce que tu veux.


    EDIT
    listbox1 le garage 3m
    listbox2 les planches
    essai avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub Ajouter()
    Dim i As Integer
     
        For i = 0 To ListBox1.ListCount - 1
            If (ListBox1.Selected(i)) = True Then
                Sheets("base").Range("A1").Offset(0, 1).End(xlDown).Value = ListBox2.List(i)
            End If
        Next i
    End Sub

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Par défaut
    Oui, c'est bien une listbox nommée "lstÉpaisseur"

  14. #14
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    désoler pour les codes d'avant voici exactement ce qu'il te faut
    a savoir que dans la liste box cela commence a 0
    EDIT
    il y à peut-etre encore une ou deux petite erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub ListBox1_Click()
    Dim i As Integer
        If (ListBox1.ListIndex = -1) Then Exit Sub
            For i = 0 To ListBox1.ListCount - 1
                If (Me.ListBox1.Selected(i)) Then
                        MsgBox ("vous avez selectionner " & ListBox1.List(i))
                        Sheets("base").Range("A1").Offset(0, 0).End(xlup).Value = ListBox2.List(2) ' 1er planche
                        Sheets("base").Range("B1").Offset(0, 1).End(xlup).Value = ListBox2.List(4) ' 2eme planche
                        'etc...
                End If
            Next i
    End Sub

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